New branch for vm-tests that use cts-tf framework.

Change-Id: I9927dc09027fc2298a1b1f7ee6c918ed1d36723a
diff --git a/tools/vm-tests-tf/src/dot/Main.java b/tools/vm-tests-tf/src/dot/Main.java
new file mode 100644
index 0000000..b7d2dc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/Main.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot;
+
+import dot.junit.AllTests;
+import junit.textui.TestRunner;
+
+/**
+ * Main class to run the jasmin tests.
+ */
+public class Main {
+    public static void main(String[] args) {
+        if (args.length == 0) {
+            System.out.println("Running all tests...");
+            TestRunner.run(AllTests.suite());
+        } else {
+            System.out.println("Running selected tests...");
+            TestRunner.main(args);
+        }
+
+        Runtime.getRuntime().halt(0);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/AllTests.java b/tools/vm-tests-tf/src/dot/junit/AllTests.java
new file mode 100644
index 0000000..fd54824
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/AllTests.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package dot.junit;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite();
+        // tests all opcodes
+        suite.addTest(dot.junit.opcodes.AllTests.suite());
+        suite.addTest(dot.junit.verify.AllTests.suite());
+        suite.addTest(dot.junit.format.AllTests.suite());
+        return suite;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/DxAbstractMain.java b/tools/vm-tests-tf/src/dot/junit/DxAbstractMain.java
new file mode 100644
index 0000000..d40fb94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/DxAbstractMain.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit;
+
+public class DxAbstractMain {
+    
+    static public void assertEquals(int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals. Expected " + expected + " actual " + actual);
+    }
+    
+    static public void assertEquals(String message, int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals: " + message + " Expected " + expected + " actual " + actual);
+    }
+    
+
+    static public void assertEquals(long expected, long actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals. Expected " + expected + " actual " + actual);
+    }
+
+    static public void assertEquals(double expected, double actual, double delta) {
+        if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
+    }
+    
+    static public void assertEquals(Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new RuntimeException("AssertionFailedError: not the same");
+    }
+    
+    static public void assertTrue(boolean condition) {
+        if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
+    }
+    
+    static public void assertFalse(boolean condition) {
+        if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
+    }
+    
+    static public void assertNotNull(Object object) {
+        if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
+    }
+    
+    static public void assertNull(Object object) {
+        if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
+    }
+    
+    static public void fail(String message) {
+        throw new RuntimeException("AssertionFailedError msg:"+message);
+    }
+    
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/DxTestCase.java b/tools/vm-tests-tf/src/dot/junit/DxTestCase.java
new file mode 100644
index 0000000..00eb6fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/DxTestCase.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit;
+
+import junit.framework.TestCase;
+
+public class DxTestCase extends TestCase {
+    
+    // omit the "extends TestCase" and uncomment the following methods if you would like to run the tests as rolled-out, separate tests.
+    
+/*    
+    static public void assertEquals(int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(long expected, long actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(double expected, double actual, double delta) {
+        if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
+    }
+    
+    static public void assertEquals(Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new RuntimeException("AssertionFailedError: not the same");
+    }
+    
+    static public void assertTrue(boolean condition) {
+        if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
+    }
+    
+    static public void assertFalse(boolean condition) {
+        if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
+    }
+    
+    static public void assertNotNull(Object object) {
+        if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
+    }
+    
+    static public void assertNull(Object object) {
+        if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
+    }
+    
+    static public void fail(String message) {
+        throw new RuntimeException("AssertionFailedError msg:"+message);
+    }
+*/    
+    
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/DxUtil.java b/tools/vm-tests-tf/src/dot/junit/DxUtil.java
new file mode 100644
index 0000000..cba0d54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/DxUtil.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit; 
+
+public class DxUtil {
+    private static boolean isDalvik = false;
+    
+    static {
+        /**
+         * whether in case of a failure, also ClassNotFoundException is accepted.
+         * this makes sense for invalid classes that got rejected by the dx tools
+         * and thus do not exist in .dex format, so that this class missing means a
+         * the expected verify error (though at the dx tool level)
+         */
+//        String acnfS = System.getProperty("acceptCNF");
+//        isDalvik = (acnfS != null && acnfS.equals("true"));
+        //System.out.println("@DX:DxUtil:isDalik="+isDalvik);
+    }
+    
+    public static void checkVerifyException(Throwable t) {
+        // the dalvik vm and other vm handle verify errors differently (see the dalvik verifier)
+        // the dalvik vm only throws a VerifyError, whereas other vm can throw all subclasses of
+        // LinkageError:
+        // - ClassCircularityError
+        // - ClassFormatError
+        // - ExceptionInInitializerError
+        // - IncompatibleClassChangeError
+        // - NoClassDefFoundError
+        // - UnsatisfiedLinkError
+        // - VerifyError
+
+        // in case we are testing the dalvik, we also accept a ClassNotFoundException, 
+        // since that may happen when a verify error was thrown by the dx tool and thus no
+        // classes.dex was written at all. 
+        //System.out.println("@dx:debug:isDalvik:"+isDalvik);
+        /*
+        if ((t instanceof VerifyError || 
+                (isDalvik && t instanceof ClassNotFoundException) || 
+                (!isDalvik && !(t instanceof NoClassDefFoundError) 
+                        && t instanceof LinkageError))) {
+                // ok, this is what we expected
+            System.out.println("@dx:debug:vfe-ok: vfe was:"+t.getClass().getName()+", msg:"+t.getMessage());
+            return;
+        } else {
+            throw new RuntimeException("test did not cause the expected verify error, but:"+t.getClass().getName()+", msg:"+t.getMessage());
+        }
+*/
+        if (t instanceof VerifyError || t instanceof java.lang.IncompatibleClassChangeError ||t instanceof ClassNotFoundException) {
+                // ok, this is what we expected
+        } else {
+            throw new RuntimeException("VerifyError expected", t);
+        }
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/format/AllTests.java b/tools/vm-tests-tf/src/dot/junit/format/AllTests.java
new file mode 100644
index 0000000..30cc091
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/AllTests.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.format;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for dalvik vm: test that "
+                + "structurally damaged files are rejected by the verifier");
+        suite.addTestSuite(dot.junit.format.f1.Test_f1.class);
+
+        return suite;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/Test_f1.java b/tools/vm-tests-tf/src/dot/junit/format/f1/Test_f1.java
new file mode 100644
index 0000000..7751833
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/Test_f1.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.format.f1;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_f1 extends DxTestCase {
+
+    /**
+     * @constraint n/a
+     * @title size of dex file shall be greater than size of header 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title check that .dex with wrong magic is rejected 
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong version is rejected 
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong endian_tag is rejected 
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong header size is rejected 
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  file length must be equal to length in header
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  header->map_off != 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title number of classes in dex shall be > 0
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong checksum is rejected 
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_9");
+            fail("expected a verification exception but this test may fail if this check is not enforced");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong signature is rejected 
+     */
+//    public void testVFE10() {
+//        try {
+//            Class.forName("dot.junit.format.f1.d.T_f1_10");
+//            fail("expected a verification exception but this test may fail if this check is not enforced");
+//        } catch (Throwable t) {
+//            DxUtil.checkVerifyException(t);
+//        }
+//    }
+    
+    /**
+     * @constraint n/a
+     * @title header and map section mismatch 
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title overlapping sections 
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_0.java b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_0.java
new file mode 100644
index 0000000..dda0585
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_0.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.format.f1.d;
+
+/**
+*
+*/
+public class T_f1_0 {
+   // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.d
new file mode 100644
index 0000000..e674f34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_1.java
+.class public dot.junit.format.f1.d.T_f1_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.dfh
new file mode 100644
index 0000000..9f57983
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.dfh
@@ -0,0 +1,50 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ec6e3629
+    29 36 6E EC 
+// parsed: offset 12, len 20: signature           : 3861...369f
+    38 61 EF D2 97 82 DF F7 A7 77 7B 79 71 13 35 C5 6D 3E 36 9F 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.d
new file mode 100644
index 0000000..c06a20e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_10.java
+.class public dot.junit.format.f1.d.T_f1_10
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.dfh
new file mode 100644
index 0000000..302ade9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.dfh
@@ -0,0 +1,250 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_10.dex'...
+//@leaveSignature
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 847035e6
+    E6 35 70 84 
+// parsed: offset 12, len 20: signature           : 3812...2763
+//@mod    38 12 0A DA E3 92 55 8C 6E 8F 55 E2 13 CF 5C C2 93 C5 27 63 
+    38 12 0A DA E3 92 55 8C 6E 8F 55 E2 13 CF 5C C2 93 C5 27 64 
+// parsed: offset 32, len 4: file_size           : 504
+    F8 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 380 (0x00017c)
+    7C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 288
+    20 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_10;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ljava/lang/Object;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 341 (0x000155) "T_f1_10.java"
+    55 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 355 (0x000163) "V"
+    63 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 358 (0x000166) "run"
+    66 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_10;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 363 (0x00016b)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 6B 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_10.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_10.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 33: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_10;"
+    1F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 31 30 3B 00 
+// parsed: offset 321, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 341, len 14: TYPE_STRING_DATA_ITEM [3] "T_f1_10.java"
+    0C 54 5F 66 31 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 355, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 358, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_10;"
+    // parsed: offset 363, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 364, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 365, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 366, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 367, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 368, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 371, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 373, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 374, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 375, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 377, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 380, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 384, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 396, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 408, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 420, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 432, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 444, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 456, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 468, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 480, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 363 (0x00016b)
+        00 20 00 00 01 00 00 00 6B 01 00 00 
+    // parsed: offset 492, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 380 (0x00017c)
+        00 10 00 00 01 00 00 00 7C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.d
new file mode 100644
index 0000000..4ad888f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_11.java
+.class public dot.junit.format.f1.d.T_f1_11
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.dfh
new file mode 100644
index 0000000..520eecd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 759b34c5
+    C5 34 9B 75 
+// parsed: offset 12, len 20: signature           : 4b4b...0a08
+    4B 4B CE BA CF CF BB 48 3B 6A 80 1B 8A C6 11 04 21 E0 0A 08 
+// parsed: offset 32, len 4: file_size           : 504
+    F8 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 380 (0x00017c)
+    7C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+//@mod    B8 00 00 00 
+    BA 00 00 00 
+// parsed: offset 104, len 4: data_size           : 288
+    20 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_11;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ljava/lang/Object;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 341 (0x000155) "T_f1_11.java"
+    55 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 355 (0x000163) "V"
+    63 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 358 (0x000166) "run"
+    66 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_11;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 363 (0x00016b)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 6B 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_11.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_11.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 33: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_11;"
+    1F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 31 31 3B 00 
+// parsed: offset 321, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 341, len 14: TYPE_STRING_DATA_ITEM [3] "T_f1_11.java"
+    0C 54 5F 66 31 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 355, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 358, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_11;"
+    // parsed: offset 363, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 364, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 365, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 366, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 367, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 368, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 371, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 373, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 374, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 375, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 377, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 380, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 384, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 396, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 408, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 420, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 432, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 444, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 456, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 468, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 480, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 363 (0x00016b)
+        00 20 00 00 01 00 00 00 6B 01 00 00 
+    // parsed: offset 492, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 380 (0x00017c)
+        00 10 00 00 01 00 00 00 7C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.d
new file mode 100644
index 0000000..e6e053d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_12.java
+.class public dot.junit.format.f1.d.T_f1_12
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.dfh
new file mode 100644
index 0000000..4676340
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.dfh
@@ -0,0 +1,250 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_12.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07303496
+    96 34 30 07 
+// parsed: offset 12, len 20: signature           : 100a...7239
+    10 0A 39 C5 D2 93 06 FC 06 5B 53 BC 09 9C 40 BB 95 77 72 39 
+// parsed: offset 32, len 4: file_size           : 504
+    F8 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 380 (0x00017c)
+    7C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+//@mod    B8 00 00 00 
+    A8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 288
+    20 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_12;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ljava/lang/Object;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 341 (0x000155) "T_f1_12.java"
+    55 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 355 (0x000163) "V"
+    63 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 358 (0x000166) "run"
+    66 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_12;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 363 (0x00016b)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 6B 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_12.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_12.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 33: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_12;"
+    1F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 31 32 3B 00 
+// parsed: offset 321, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 341, len 14: TYPE_STRING_DATA_ITEM [3] "T_f1_12.java"
+    0C 54 5F 66 31 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 355, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 358, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_12;"
+    // parsed: offset 363, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 364, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 365, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 366, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 367, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 368, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 371, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 373, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 374, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 375, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 377, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 380, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 384, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 396, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 408, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 420, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 432, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 444, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+//@mod        06 00 00 00 01 00 00 00 B8 00 00 00 
+        06 00 00 00 01 00 00 00 A8 00 00 00 
+    // parsed: offset 456, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 468, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 480, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 363 (0x00016b)
+        00 20 00 00 01 00 00 00 6B 01 00 00 
+    // parsed: offset 492, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 380 (0x00017c)
+        00 10 00 00 01 00 00 00 7C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.d
new file mode 100644
index 0000000..72ed9ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_2.java
+.class public dot.junit.format.f1.d.T_f1_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.dfh
new file mode 100644
index 0000000..8bb38ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_2.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+//@mod    64 65 78 0A 30 33 35 00 
+    64 66 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 8bce34e8
+    E8 34 CE 8B 
+// parsed: offset 12, len 20: signature           : f886...8932
+    F8 86 A3 17 14 FD 2D 49 29 6D D9 46 AA 4F 13 EF AE 3E 89 32 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_2;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_2.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_2;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_2.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_2.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_2;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 32 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_2.java"
+    0B 54 5F 66 31 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_2;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.d
new file mode 100644
index 0000000..f98d9fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_3.java
+.class public dot.junit.format.f1.d.T_f1_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.dfh
new file mode 100644
index 0000000..cdfa4a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_3.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+//@mod    64 65 78 0A 30 33 35 00 
+    64 65 78 0A 30 33 36 00 
+// parsed: offset 8, len 4: checksum            : df0f35a3
+    A3 35 0F DF 
+// parsed: offset 12, len 20: signature           : b564...1b93
+    B5 64 17 3D FC 6E 3C 3F 82 57 DF 8D 9C A7 73 4C A9 DF 1B 93 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_3;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_3.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_3;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_3.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_3.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_3;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 33 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_3.java"
+    0B 54 5F 66 31 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_3;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.d
new file mode 100644
index 0000000..22611e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_4.java
+.class public dot.junit.format.f1.d.T_f1_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.dfh
new file mode 100644
index 0000000..ea0b607
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_4.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 64f33679
+    79 36 F3 64 
+// parsed: offset 12, len 20: signature           : 8406...c8ea
+    84 06 E5 69 3D 66 48 AB 94 79 27 C2 C1 ED 00 D7 F5 13 C8 EA 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+//@mod    78 56 34 12 
+    78 56 12 34 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_4;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_4.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_4;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_4.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_4.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_4;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 34 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_4.java"
+    0B 54 5F 66 31 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_4;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.d
new file mode 100644
index 0000000..e3a993f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_5.java
+.class public dot.junit.format.f1.d.T_f1_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.dfh
new file mode 100644
index 0000000..99ffd13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_5.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 76133706
+    06 37 13 76 
+// parsed: offset 12, len 20: signature           : 8bbd...7aa2
+    8B BD 3B 72 62 F4 A2 15 DF 5E D8 E5 D2 AE 88 0D 4F B2 7A A2 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+//@mod    70 00 00 00 
+    69 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_5;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_5.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_5;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_5.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_5.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_5;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 35 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_5.java"
+    0B 54 5F 66 31 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_5;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.d
new file mode 100644
index 0000000..6bb0bf0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_6.java
+.class public dot.junit.format.f1.d.T_f1_6
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.dfh
new file mode 100644
index 0000000..375a9ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_6.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_6.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 9bbb37a1
+    A1 37 BB 9B 
+// parsed: offset 12, len 20: signature           : a799...4c32
+    A7 99 F8 99 E8 8A 81 65 99 13 A3 2A E4 F9 F2 75 BD A6 4C 32 
+// parsed: offset 32, len 4: file_size           : 500
+//@mod    F4 01 00 00 
+    F4 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_6;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_6.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_6;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_6;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_6.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_6.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_6.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_6;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 36 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_6.java"
+    0B 54 5F 66 31 5F 36 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_6;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.d
new file mode 100644
index 0000000..61f31b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_7.java
+.class public dot.junit.format.f1.d.T_f1_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.dfh
new file mode 100644
index 0000000..1845c7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_7.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6b8435f0
+    F0 35 84 6B 
+// parsed: offset 12, len 20: signature           : a4f8...a536
+    A4 F8 18 65 4B 3E B6 D4 7A 69 71 CE B6 43 71 42 D3 6C A5 36 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+//@mod    78 01 00 00 
+    00 00 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_7;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_7.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_7;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_7.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_7.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_7;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 37 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_7.java"
+    0B 54 5F 66 31 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_7;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.d
new file mode 100644
index 0000000..c622eb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_8.java
+.class public dot.junit.format.f1.d.T_f1_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.dfh
new file mode 100644
index 0000000..3ebff78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.dfh
@@ -0,0 +1,251 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : bd8b37bf
+    BF 37 8B BD 
+// parsed: offset 12, len 20: signature           : 1091...62b1
+    10 91 A3 C7 70 2E 36 E5 FD 30 D9 9A 80 EE 8A CC EC BA 62 B1 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+//@mod    01 00 00 00 
+    00 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_8;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_8.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_8;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+//@mod    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_8.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_8.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_8;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 38 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_8.java"
+    0B 54 5F 66 31 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_8;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+//@mod        06 00 00 00 01 00 00 00 B8 00 00 00 
+        06 00 00 00 00 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.d
new file mode 100644
index 0000000..9a44f4e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_9.java
+.class public dot.junit.format.f1.d.T_f1_9
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.dfh
new file mode 100644
index 0000000..f3e4dd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.dfh
@@ -0,0 +1,250 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_9.dex'...
+//@leaveChecksum
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a9763611
+//@mod    11 36 76 A9 
+    11 36 76 AA 
+// parsed: offset 12, len 20: signature           : 1ee9...1036
+    1E E9 E9 EC 3D 14 5F 07 A1 FA 8E E8 B1 FA 6C 91 35 6A 10 36 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_9;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_9.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_9;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_9.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_9.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_9;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 39 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_9.java"
+    0B 54 5F 66 31 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_9;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/AllTests.java b/tools/vm-tests-tf/src/dot/junit/opcodes/AllTests.java
new file mode 100644
index 0000000..282ac42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/AllTests.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for all dalvik vm opcodes");
+        suite.addTestSuite(dot.junit.opcodes.add_double_2addr.Test_add_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_double.Test_add_double.class);
+        suite.addTestSuite(dot.junit.opcodes.add_float_2addr.Test_add_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_float.Test_add_float.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int_2addr.Test_add_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int_lit16.Test_add_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int_lit8.Test_add_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int.Test_add_int.class);
+        suite.addTestSuite(dot.junit.opcodes.add_long_2addr.Test_add_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_long.Test_add_long.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_boolean.Test_aget_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_byte.Test_aget_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_char.Test_aget_char.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_object.Test_aget_object.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_short.Test_aget_short.class);
+        suite.addTestSuite(dot.junit.opcodes.aget.Test_aget.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_wide.Test_aget_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int_2addr.Test_and_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int_lit16.Test_and_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int_lit8.Test_and_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int.Test_and_int.class);
+        suite.addTestSuite(dot.junit.opcodes.and_long_2addr.Test_and_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.and_long.Test_and_long.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_boolean.Test_aput_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_byte.Test_aput_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_char.Test_aput_char.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_object.Test_aput_object.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_short.Test_aput_short.class);
+        suite.addTestSuite(dot.junit.opcodes.aput.Test_aput.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_wide.Test_aput_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.array_length.Test_array_length.class);
+        suite.addTestSuite(dot.junit.opcodes.check_cast.Test_check_cast.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpg_double.Test_cmpg_double.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpg_float.Test_cmpg_float.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpl_double.Test_cmpl_double.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpl_float.Test_cmpl_float.class);
+        suite.addTestSuite(dot.junit.opcodes.cmp_long.Test_cmp_long.class);
+        suite.addTestSuite(dot.junit.opcodes.const_16.Test_const_16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_4.Test_const_4.class);
+        suite.addTestSuite(dot.junit.opcodes.const_class.Test_const_class.class);
+        suite.addTestSuite(dot.junit.opcodes.const_high16.Test_const_high16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_string_jumbo.Test_const_string_jumbo.class);
+        suite.addTestSuite(dot.junit.opcodes.const_string.Test_const_string.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide_16.Test_const_wide_16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide_32.Test_const_wide_32.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide_high16.Test_const_wide_high16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide.Test_const_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.div_double_2addr.Test_div_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_double.Test_div_double.class);
+        suite.addTestSuite(dot.junit.opcodes.div_float_2addr.Test_div_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_float.Test_div_float.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int_2addr.Test_div_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int_lit16.Test_div_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int_lit8.Test_div_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int.Test_div_int.class);
+        suite.addTestSuite(dot.junit.opcodes.div_long_2addr.Test_div_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_long.Test_div_long.class);
+        suite.addTestSuite(dot.junit.opcodes.double_to_float.Test_double_to_float.class);
+        suite.addTestSuite(dot.junit.opcodes.double_to_int.Test_double_to_int.class);
+        suite.addTestSuite(dot.junit.opcodes.double_to_long.Test_double_to_long.class);
+        suite.addTestSuite(dot.junit.opcodes.fill_array_data.Test_fill_array_data.class);
+        suite.addTestSuite(dot.junit.opcodes.filled_new_array_range.Test_filled_new_array_range.class);
+        suite.addTestSuite(dot.junit.opcodes.filled_new_array.Test_filled_new_array.class);
+        suite.addTestSuite(dot.junit.opcodes.float_to_double.Test_float_to_double.class);
+        suite.addTestSuite(dot.junit.opcodes.float_to_int.Test_float_to_int.class);
+        suite.addTestSuite(dot.junit.opcodes.float_to_long.Test_float_to_long.class);
+        suite.addTestSuite(dot.junit.opcodes.goto_16.Test_goto_16.class);
+        suite.addTestSuite(dot.junit.opcodes.goto_32.Test_goto_32.class);
+        suite.addTestSuite(dot.junit.opcodes.if_eq.Test_if_eq.class);
+        suite.addTestSuite(dot.junit.opcodes.if_eqz.Test_if_eqz.class);
+        suite.addTestSuite(dot.junit.opcodes.if_ge.Test_if_ge.class);
+        suite.addTestSuite(dot.junit.opcodes.if_gez.Test_if_gez.class);
+        suite.addTestSuite(dot.junit.opcodes.if_gt.Test_if_gt.class);
+        suite.addTestSuite(dot.junit.opcodes.if_gtz.Test_if_gtz.class);
+        suite.addTestSuite(dot.junit.opcodes.if_le.Test_if_le.class);
+        suite.addTestSuite(dot.junit.opcodes.if_lez.Test_if_lez.class);
+        suite.addTestSuite(dot.junit.opcodes.if_lt.Test_if_lt.class);
+        suite.addTestSuite(dot.junit.opcodes.if_ltz.Test_if_ltz.class);
+        suite.addTestSuite(dot.junit.opcodes.if_ne.Test_if_ne.class);
+        suite.addTestSuite(dot.junit.opcodes.if_nez.Test_if_nez.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_boolean.Test_iget_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_byte.Test_iget_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_char.Test_iget_char.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_object.Test_iget_object.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_short.Test_iget_short.class);
+        suite.addTestSuite(dot.junit.opcodes.iget.Test_iget.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_wide.Test_iget_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.instance_of.Test_instance_of.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_byte.Test_int_to_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_char.Test_int_to_char.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_double.Test_int_to_double.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_float.Test_int_to_float.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_long.Test_int_to_long.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_short.Test_int_to_short.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_direct_range.Test_invoke_direct_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_direct.Test_invoke_direct.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_interface_range.Test_invoke_interface_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_interface.Test_invoke_interface.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_static_range.Test_invoke_static_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_static.Test_invoke_static.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_super_range.Test_invoke_super_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_super.Test_invoke_super.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_virtual_range.Test_invoke_virtual_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_virtual.Test_invoke_virtual.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_boolean.Test_iput_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_byte.Test_iput_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_char.Test_iput_char.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_object.Test_iput_object.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_short.Test_iput_short.class);
+        suite.addTestSuite(dot.junit.opcodes.iput.Test_iput.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_wide.Test_iput_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.long_to_double.Test_long_to_double.class);
+        suite.addTestSuite(dot.junit.opcodes.long_to_float.Test_long_to_float.class);
+        suite.addTestSuite(dot.junit.opcodes.long_to_int.Test_long_to_int.class);
+        suite.addTestSuite(dot.junit.opcodes.monitor_enter.Test_monitor_enter.class);
+        suite.addTestSuite(dot.junit.opcodes.monitor_exit.Test_monitor_exit.class);
+        suite.addTestSuite(dot.junit.opcodes.move_16.Test_move_16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_exception.Test_move_exception.class);
+        suite.addTestSuite(dot.junit.opcodes.move_from16.Test_move_from16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_object_16.Test_move_object_16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_object_from16.Test_move_object_from16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_object.Test_move_object.class);
+        suite.addTestSuite(dot.junit.opcodes.move_result_object.Test_move_result_object.class);
+        suite.addTestSuite(dot.junit.opcodes.move_result.Test_move_result.class);
+        suite.addTestSuite(dot.junit.opcodes.move_result_wide.Test_move_result_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.move.Test_move.class);
+        suite.addTestSuite(dot.junit.opcodes.move_wide_16.Test_move_wide_16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_wide_from16.Test_move_wide_from16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_wide.Test_move_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_double_2addr.Test_mul_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_double.Test_mul_double.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_float_2addr.Test_mul_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_float.Test_mul_float.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int_2addr.Test_mul_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int_lit16.Test_mul_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int_lit8.Test_mul_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int.Test_mul_int.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_long_2addr.Test_mul_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_long.Test_mul_long.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_double.Test_neg_double.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_float.Test_neg_float.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_int.Test_neg_int.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_long.Test_neg_long.class);
+        suite.addTestSuite(dot.junit.opcodes.new_array.Test_new_array.class);
+        suite.addTestSuite(dot.junit.opcodes.new_instance.Test_new_instance.class);
+        suite.addTestSuite(dot.junit.opcodes.nop.Test_nop.class);
+        suite.addTestSuite(dot.junit.opcodes.not_int.Test_not_int.class);
+        suite.addTestSuite(dot.junit.opcodes.not_long.Test_not_long.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_const.Test_opc_const.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_goto.Test_opc_goto.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_return.Test_opc_return.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_throw.Test_opc_throw.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int_2addr.Test_or_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int_lit16.Test_or_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int_lit8.Test_or_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int.Test_or_int.class);
+        suite.addTestSuite(dot.junit.opcodes.or_long_2addr.Test_or_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.or_long.Test_or_long.class);
+        suite.addTestSuite(dot.junit.opcodes.packed_switch.Test_packed_switch.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_double_2addr.Test_rem_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_double.Test_rem_double.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_float_2addr.Test_rem_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_float.Test_rem_float.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int_2addr.Test_rem_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int_lit16.Test_rem_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int_lit8.Test_rem_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int.Test_rem_int.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_long_2addr.Test_rem_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_long.Test_rem_long.class);
+        suite.addTestSuite(dot.junit.opcodes.return_object.Test_return_object.class);
+        suite.addTestSuite(dot.junit.opcodes.return_void.Test_return_void.class);
+        suite.addTestSuite(dot.junit.opcodes.return_wide.Test_return_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.rsub_int_lit8.Test_rsub_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.rsub_int.Test_rsub_int.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_boolean.Test_sget_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_byte.Test_sget_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_char.Test_sget_char.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_object.Test_sget_object.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_short.Test_sget_short.class);
+        suite.addTestSuite(dot.junit.opcodes.sget.Test_sget.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_wide.Test_sget_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_int_2addr.Test_shl_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_int_lit8.Test_shl_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_int.Test_shl_int.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_long_2addr.Test_shl_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_long.Test_shl_long.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_int_2addr.Test_shr_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_int_lit8.Test_shr_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_int.Test_shr_int.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_long_2addr.Test_shr_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_long.Test_shr_long.class);
+        suite.addTestSuite(dot.junit.opcodes.sparse_switch.Test_sparse_switch.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_boolean.Test_sput_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_byte.Test_sput_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_char.Test_sput_char.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_object.Test_sput_object.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_short.Test_sput_short.class);
+        suite.addTestSuite(dot.junit.opcodes.sput.Test_sput.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_wide.Test_sput_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_double_2addr.Test_sub_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_double.Test_sub_double.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_float_2addr.Test_sub_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_float.Test_sub_float.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_int_2addr.Test_sub_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_int.Test_sub_int.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_long_2addr.Test_sub_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_long.Test_sub_long.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_int_2addr.Test_ushr_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_int_lit8.Test_ushr_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_int.Test_ushr_int.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_long_2addr.Test_ushr_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_long.Test_ushr_long.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int_2addr.Test_xor_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int_lit16.Test_xor_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int_lit8.Test_xor_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int.Test_xor_int.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_long_2addr.Test_xor_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_long.Test_xor_long.class);      
+        return suite;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/Test_add_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/Test_add_double.java
new file mode 100644
index 0000000..8887d50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/Test_add_double.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_double.d.T_add_double_1;
+import dot.junit.opcodes.add_double.d.T_add_double_3;
+
+public class Test_add_double extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(5.84d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(-3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, -2.7d
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.add_double.d.T_add_double_2
+        //@uses dot.junit.opcodes.add_double.d.T_add_double_3 
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(-5.84d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this sum of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_add_double_3 t = new T_add_double_3();
+        try {
+            t.run();
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB5() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(-0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, 2.7d
+     */
+    public void testB7() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(+0d, t.run(-2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -4.9E-324
+     */
+    public void testB9() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, -4.9E-324));
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.d
new file mode 100644
index 0000000..f3d3653
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_1.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.java
new file mode 100644
index 0000000..530fbd2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double.d;
+
+public class T_add_double_1 {
+
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.d
new file mode 100644
index 0000000..da30626
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       add-double v0, v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.d
new file mode 100644
index 0000000..ebdc492
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_3.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-double v0, v2, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.java
new file mode 100644
index 0000000..fadc09e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double.d;
+
+public class T_add_double_3 {
+
+    public double run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.d
new file mode 100644
index 0000000..7acfdfd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_4.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.d
new file mode 100644
index 0000000..64b8613
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_5.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.d
new file mode 100644
index 0000000..424bd3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_6.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+       move v1, v5
+       move v2, v6    
+       move v3, v6    
+       add-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/Test_add_double_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/Test_add_double_2addr.java
new file mode 100644
index 0000000..f0a17a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/Test_add_double_2addr.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_1;
+import dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_3;
+
+public class Test_add_double_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(5.84d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(-3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, -2.7d
+     */
+    public void testN3() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(-5.84d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this sum of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_add_double_2addr_3 t = new T_add_double_2addr_3();
+        try {
+            t.run();
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB5() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(-0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, 2.7d
+     */
+    public void testB7() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(+0d, t.run(-2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -4.9E-324
+     */
+    public void testB9() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, -4.9E-324));
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d
new file mode 100644
index 0000000..44d1f78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_1.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.java
new file mode 100644
index 0000000..33ac19a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double_2addr.d;
+
+public class T_add_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d
new file mode 100644
index 0000000..3633e01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_2.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       add-double/2addr v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d
new file mode 100644
index 0000000..62f4198
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_3.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-double/2addr v4, v2
+       return-wide v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.java
new file mode 100644
index 0000000..860bfc9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double_2addr.d;
+
+public class T_add_double_2addr_3 {
+
+    public double run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d
new file mode 100644
index 0000000..a9f2625
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_4.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d
new file mode 100644
index 0000000..521f02b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_5.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d
new file mode 100644
index 0000000..cd95033
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_6.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+          move v1, v5
+       move v2, v6
+          move v3, v6          
+       add-double/2addr v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/Test_add_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/Test_add_float.java
new file mode 100644
index 0000000..b821daa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/Test_add_float.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_float.d.T_add_float_1;
+import dot.junit.opcodes.add_float.d.T_add_float_5;
+
+public class Test_add_float extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(5.84f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(-3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, -2.7f
+     */
+    public void testN3() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(-5.84f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_add_float_5 t = new T_add_float_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(3.3028235E38f, 0.11E38f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_float_1 t = new T_add_float_1();
+        assertTrue(Float.isNaN(t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY)));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(-0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, 2.7f
+     */
+    public void testB7() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(+0f, t.run(-2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB9() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.d
new file mode 100644
index 0000000..502b435
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_1.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.java
new file mode 100644
index 0000000..efe39a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float.d;
+
+public class T_add_float_1 {
+
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.d
new file mode 100644
index 0000000..627036b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3.1415    
+       add-float v0, v3, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.d
new file mode 100644
index 0000000..7de8486
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_3.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3141523
+       add-float v0, v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.d
new file mode 100644
index 0000000..443ed0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_4.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float v0, v2, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.d
new file mode 100644
index 0000000..efcd143
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_5.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+       add-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.java
new file mode 100644
index 0000000..403a198
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float.d;
+
+public class T_add_float_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.d
new file mode 100644
index 0000000..061a4da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_6.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/Test_add_float_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/Test_add_float_2addr.java
new file mode 100644
index 0000000..5824a70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/Test_add_float_2addr.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_1;
+import dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_5;
+
+public class Test_add_float_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(5.84f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(-3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, -2.7f
+     */
+    public void testN3() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(-5.84f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_add_float_2addr_5 t = new T_add_float_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(3.3028235E38f, 0.11E38f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertTrue(Float.isNaN(t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY)));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(-0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, 2.7f
+     */
+    public void testB7() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(+0f, t.run(-2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB9() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d
new file mode 100644
index 0000000..38344b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_1.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.java
new file mode 100644
index 0000000..a872040
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float_2addr.d;
+
+public class T_add_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d
new file mode 100644
index 0000000..dd35d2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_2.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3.1415    
+       add-float/2addr v3, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d
new file mode 100644
index 0000000..6c0eb9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_3.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3141523
+       add-float/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d
new file mode 100644
index 0000000..c9832e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_4.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float/2addr v2, v1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d
new file mode 100644
index 0000000..281b673
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_5.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+       add-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.java
new file mode 100644
index 0000000..afdfb51
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float_2addr.d;
+
+public class T_add_float_2addr_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d
new file mode 100644
index 0000000..2aa078c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_6.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/Test_add_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/Test_add_int.java
new file mode 100644
index 0000000..f952b82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/Test_add_int.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int.d.T_add_int_1;
+import dot.junit.opcodes.add_int.d.T_add_int_5;
+
+public class Test_add_int extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4 
+     */
+    public void testN1() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(12, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2147483647, t.run(0, -2147483647));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN5() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2147483648, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = -1, 1
+     */
+    public void testN6() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(0, t.run(-1, 1));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_5 t = new T_add_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2147483647, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.d
new file mode 100644
index 0000000..bd71e35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_1.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.java
new file mode 100644
index 0000000..6b9c617
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int.d;
+
+public class T_add_int_1 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.d
new file mode 100644
index 0000000..83cb90c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int v0, v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.d
new file mode 100644
index 0000000..84db6e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_3.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int v0, v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.d
new file mode 100644
index 0000000..0ce8bbc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_4.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.d
new file mode 100644
index 0000000..a92add0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_5.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       add-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.java
new file mode 100644
index 0000000..fa7efca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int.d;
+
+public class T_add_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.d
new file mode 100644
index 0000000..3dac6df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_6.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/Test_add_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/Test_add_int_2addr.java
new file mode 100644
index 0000000..4804246
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/Test_add_int_2addr.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_1;
+import dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_5;
+
+public class Test_add_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(12, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2147483647, t.run(0, -2147483647));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN5() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2147483648, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = -1, 1
+     */
+    public void testN6() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(0, t.run(-1, 1));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_2addr_5 t = new T_add_int_2addr_5();
+        try {
+            t.run(1, 2f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2147483647, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d
new file mode 100644
index 0000000..980379c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_1.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.java
new file mode 100644
index 0000000..d5dc9c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_2addr.d;
+
+public class T_add_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d
new file mode 100644
index 0000000..bc0c3ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_2.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int/2addr v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d
new file mode 100644
index 0000000..c47322e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_3.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d
new file mode 100644
index 0000000..7b4adf8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_4.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d
new file mode 100644
index 0000000..042e671
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_5.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       add-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.java
new file mode 100644
index 0000000..5161361
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_2addr.d;
+
+public class T_add_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d
new file mode 100644
index 0000000..50a14a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_6.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/Test_add_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/Test_add_int_lit16.java
new file mode 100644
index 0000000..1400145
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/Test_add_int_lit16.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_16;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_5;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_1;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_10;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_11;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_12;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_2;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_3;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_4;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_6;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_7;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_8;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_9;
+
+public class Test_add_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 8 + 4
+     */
+    public void testN1() {
+        T_add_int_lit16_1 t = new T_add_int_lit16_1();
+        assertEquals(12, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + 255
+     */
+    public void testN2() {
+        T_add_int_lit16_2 t = new T_add_int_lit16_2();
+        assertEquals(255, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + (-32768)
+     */
+    public void testN3() {
+        T_add_int_lit16_3 t = new T_add_int_lit16_3();
+        assertEquals(-32768, t.run());
+    }
+
+    /**
+     * @title Arguments = (-2147483647) + 0
+     */
+    public void testN4() {
+        T_add_int_lit16_4 t = new T_add_int_lit16_4();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe + 2
+     */
+    public void testN5() {
+        T_add_int_lit16_5 t = new T_add_int_lit16_5();
+        assertEquals(-2147483648, t.run());
+    }
+
+    /**
+     * @title Arguments = -1 + 1
+     */
+    public void testN6() {
+        T_add_int_lit16_6 t = new T_add_int_lit16_6();
+        assertEquals(0, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_lit16_16 t = new T_add_int_lit16_16();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 + Short.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_lit16_7 t = new T_add_int_lit16_7();
+        assertEquals(Short.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + Short.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_lit16_8 t = new T_add_int_lit16_8();
+        assertEquals(-2147450882, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + 1
+     */
+    public void testB3() {
+        T_add_int_lit16_9 t = new T_add_int_lit16_9();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE + 1
+     */
+    public void testB4() {
+        T_add_int_lit16_10 t = new T_add_int_lit16_10();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB5() {
+        T_add_int_lit16_11 t = new T_add_int_lit16_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE + Short.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_lit16_12 t = new T_add_int_lit16_12();
+        assertEquals(-65536, t.run());
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d
new file mode 100644
index 0000000..b79b0f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_1.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 8
+       add-int/lit16 v0, v1, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.java
new file mode 100644
index 0000000..93da1b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_1 {
+
+    public int run() {
+        return 8 + 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d
new file mode 100644
index 0000000..c8b348a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_10.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483648
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.java
new file mode 100644
index 0000000..2b30e1d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d
new file mode 100644
index 0000000..26fe8ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_11.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.java
new file mode 100644
index 0000000..e9e8461
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_11 {
+
+    public int run() {
+        return 0 + 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d
new file mode 100644
index 0000000..34af2a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_12.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -32768
+       add-int/lit16 v0, v1, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.java
new file mode 100644
index 0000000..bbed57b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_12 {
+
+    public int run() {
+        return Short.MIN_VALUE + Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d
new file mode 100644
index 0000000..95fd121
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_13.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int/lit16 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d
new file mode 100644
index 0000000..dfa3742
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_14.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int/lit16 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d
new file mode 100644
index 0000000..6cc4b57
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_15.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d
new file mode 100644
index 0000000..ba09106
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_16.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       add-int/lit16 v0, v3, 123
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.java
new file mode 100644
index 0000000..50fd369
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_16 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d
new file mode 100644
index 0000000..bc66cbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_17.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit16 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d
new file mode 100644
index 0000000..d80497f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_2.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 255
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.java
new file mode 100644
index 0000000..3a6c2c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_2 {
+
+    public int run() {
+        return 0 + 255;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d
new file mode 100644
index 0000000..3a9009d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_3.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.java
new file mode 100644
index 0000000..c523fd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_3 {
+
+    public int run() {
+        return 0 + (-32768);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d
new file mode 100644
index 0000000..141d546
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_4.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483647
+       add-int/lit16 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.java
new file mode 100644
index 0000000..980de4a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_4 {
+
+    public int run() {
+        return (-2147483647) + 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d
new file mode 100644
index 0000000..54f42ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_5.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0x7ffffffe
+       add-int/lit16 v0, v1, 2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java
new file mode 100644
index 0000000..f22579d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_5 {
+
+    public int run() {
+        return 0x7ffffffe + 2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d
new file mode 100644
index 0000000..b103f66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_6.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.java
new file mode 100644
index 0000000..342df4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_6 {
+
+    public int run() {
+        return -1 + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d
new file mode 100644
index 0000000..b4d689f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_7.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.java
new file mode 100644
index 0000000..afd6e25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_7 {
+
+    public int run() {
+        return 0 + Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d
new file mode 100644
index 0000000..e1aa77e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_8.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit16 v0, v1, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.java
new file mode 100644
index 0000000..c63d9e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_8 {
+
+    public int run() {
+        return Integer.MAX_VALUE + Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d
new file mode 100644
index 0000000..74d8cc0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_9.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.java
new file mode 100644
index 0000000..71613ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/Test_add_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/Test_add_int_lit8.java
new file mode 100644
index 0000000..f9b3eef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/Test_add_int_lit8.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_16;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_1;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_10;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_11;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_12;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_2;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_3;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_4;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_5;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_6;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_7;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_8;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_9;
+
+public class Test_add_int_lit8 extends DxTestCase {
+    /**
+     * @title Arguments = 8 + 4
+     */
+    public void testN1() {
+        T_add_int_lit8_1 t = new T_add_int_lit8_1();
+        assertEquals(12, t.run());
+    }
+
+    /**
+     * @title Arguments = Byte.MIN_VALUE + Byte.MAX_VALUE
+     */
+    public void testN2() {
+        T_add_int_lit8_2 t = new T_add_int_lit8_2();
+        assertEquals(-1, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + (-128)
+     */
+    public void testN3() {
+        T_add_int_lit8_3 t = new T_add_int_lit8_3();
+        assertEquals(-128, t.run());
+    }
+
+    /**
+     * @title Arguments = (-2147483647) + 0
+     */
+    public void testN4() {
+        T_add_int_lit8_4 t = new T_add_int_lit8_4();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe + 2
+     */
+    public void testN5() {
+        T_add_int_lit8_5 t = new T_add_int_lit8_5();
+        assertEquals(-2147483648, t.run());
+    }
+
+    /**
+     * @title Arguments = -1 + 1
+     */
+    public void testN6() {
+        T_add_int_lit8_6 t = new T_add_int_lit8_6();
+        assertEquals(0, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_lit8_16 t = new T_add_int_lit8_16();
+        try {
+            t.run(3f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 + Byte.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_lit8_7 t = new T_add_int_lit8_7();
+        assertEquals(Byte.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + Byte.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_lit8_8 t = new T_add_int_lit8_8();
+        assertEquals(-2147483522, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + 1
+     */
+    public void testB3() {
+        T_add_int_lit8_9 t = new T_add_int_lit8_9();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE + 1
+     */
+    public void testB4() {
+        T_add_int_lit8_10 t = new T_add_int_lit8_10();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB5() {
+        T_add_int_lit8_11 t = new T_add_int_lit8_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE + Byte.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_lit8_12 t = new T_add_int_lit8_12();
+        assertEquals(-32896, t.run());
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d
new file mode 100644
index 0000000..5286f6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_1.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 8
+       add-int/lit8 v0, v1, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.java
new file mode 100644
index 0000000..732ee8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_1 {
+
+    public int run() {
+        return 8 + 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d
new file mode 100644
index 0000000..9ef34ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_10.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483648
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.java
new file mode 100644
index 0000000..68c301d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d
new file mode 100644
index 0000000..88c76b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_11.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.java
new file mode 100644
index 0000000..43b33cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_11 {
+
+    public int run() {
+        return 0 + 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d
new file mode 100644
index 0000000..a8776f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_12.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -32768
+       add-int/lit8 v0, v1, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.java
new file mode 100644
index 0000000..cfb1577
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_12 {
+
+    public int run() {
+        return Short.MIN_VALUE + Byte.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d
new file mode 100644
index 0000000..d5a468b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_13.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int/lit8 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d
new file mode 100644
index 0000000..873fff0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_14.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int/lit8 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d
new file mode 100644
index 0000000..28b894e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_15.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d
new file mode 100644
index 0000000..3d4d8c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_16.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       add-int/lit8 v0, v3, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.java
new file mode 100644
index 0000000..c482a64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_16 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d
new file mode 100644
index 0000000..6bdf030
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_17.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit8 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d
new file mode 100644
index 0000000..ef0a0fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_2.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -128
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.java
new file mode 100644
index 0000000..acf2a79
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_2 {
+
+    public int run() {
+        return Byte.MIN_VALUE + Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d
new file mode 100644
index 0000000..9a49def
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_3.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.java
new file mode 100644
index 0000000..8c10f8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_3 {
+
+    public int run() {
+        return 0 + (-128);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d
new file mode 100644
index 0000000..a3fd7dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_4.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483647
+       add-int/lit8 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.java
new file mode 100644
index 0000000..06a8fad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_4 {
+
+    public int run() {
+        return (-2147483647) + 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d
new file mode 100644
index 0000000..ab9f0ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_5.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0x7ffffffe
+       add-int/lit8 v0, v1, 2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java
new file mode 100644
index 0000000..6691276
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_5 {
+
+    public int run() {
+        return 0x7ffffffe + 2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d
new file mode 100644
index 0000000..4ea7fdb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_6.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.java
new file mode 100644
index 0000000..122a899
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_6 {
+
+    public int run() {
+        return -1 + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d
new file mode 100644
index 0000000..01fdc0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_7.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.java
new file mode 100644
index 0000000..7ec523e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_7 {
+
+    public int run() {
+        return 0 + Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d
new file mode 100644
index 0000000..75d74b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_8.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.java
new file mode 100644
index 0000000..957ccee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_8 {
+
+    public int run() {
+        return Integer.MAX_VALUE + Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d
new file mode 100644
index 0000000..a28afd0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_9.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.java
new file mode 100644
index 0000000..bdc657c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/Test_add_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/Test_add_long.java
new file mode 100644
index 0000000..301879a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/Test_add_long.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_long.d.T_add_long_1;
+import dot.junit.opcodes.add_long.d.T_add_long_6;
+
+public class Test_add_long extends DxTestCase {
+    /**
+     * @title Arguments = 12345678l, 87654321l
+     */
+    public void testN1() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(99999999l, t.run(12345678l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = 0l, 87654321l
+     */
+    public void testN2() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(87654321l, t.run(0l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = -12345678l, 0l
+     */
+    public void testN3() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-12345678l, t.run(-12345678l, 0l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this sum of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_add_long_6 t = new T_add_long_6();
+        try {
+            t.run();
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 + Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-9223372036854775808L, t.run(0l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB3() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-2, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MIN_VALUE
+     */
+    public void testB5() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + 1
+     */
+    public void testB7() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-9223372036854775807l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + 1
+     */
+    public void testB8() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-9223372036854775808l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.d
new file mode 100644
index 0000000..2dc5518
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_1.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.java
new file mode 100644
index 0000000..a6bd026
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long.d;
+
+public class T_add_long_1 {
+
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.d
new file mode 100644
index 0000000..83eaa73
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.d
new file mode 100644
index 0000000..3935188
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_3.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345
+       add-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.d
new file mode 100644
index 0000000..9dab202
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_4.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345.0
+       add-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.d
new file mode 100644
index 0000000..5c57aeb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_5.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long v0, v2, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.d
new file mode 100644
index 0000000..435256f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_6.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-long v0, v2, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.java
new file mode 100644
index 0000000..4cdc6c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long.d;
+
+public class T_add_long_6 {
+
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/Test_add_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/Test_add_long_2addr.java
new file mode 100644
index 0000000..c3ef53c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/Test_add_long_2addr.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_1;
+import dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_6;
+
+public class Test_add_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 12345678l, 87654321l
+     */
+    public void testN1() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(99999999l, t.run(12345678l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = 0l, 87654321l
+     */
+    public void testN2() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(87654321l, t.run(0l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = -12345678l, 0l
+     */
+    public void testN3() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-12345678l, t.run(-12345678l, 0l));
+    }
+
+   /**
+    * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+    * so this sum of long and double makes no sense but shall not crash the VM.  
+    */
+   public void testN4() {
+       T_add_long_2addr_6 t = new T_add_long_2addr_6();
+       try {
+           t.run();
+       } catch (Throwable e) {
+       }
+   }
+    
+    /**
+     * @title Arguments = 0 + Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(0l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB3() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-2, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MIN_VALUE
+     */
+    public void testB5() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + 1
+     */
+    public void testB7() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-9223372036854775807l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + 1
+     */
+    public void testB8() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-9223372036854775808l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference / long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d
new file mode 100644
index 0000000..ec11b7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_1.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.java
new file mode 100644
index 0000000..e799c7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long_2addr.d;
+
+public class T_add_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d
new file mode 100644
index 0000000..8172613
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_2.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d
new file mode 100644
index 0000000..e10a72a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_3.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d
new file mode 100644
index 0000000..1073b6c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_4.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345.0
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d
new file mode 100644
index 0000000..3455016
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_5.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long/2addr v2, v5
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d
new file mode 100644
index 0000000..7c842cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_6.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-long/2addr v2, v4
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.java
new file mode 100644
index 0000000..8badad9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long_2addr.d;
+
+public class T_add_long_2addr_6 {
+
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/Test_aget.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/Test_aget.java
new file mode 100644
index 0000000..d33e943
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/Test_aget.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget.d.T_aget_1;
+import dot.junit.opcodes.aget.d.T_aget_8;
+
+public class Test_aget extends DxTestCase {
+    /**
+     * @title get int from array
+     */
+    public void testN1() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        arr[1] = 100000000;
+        assertEquals(100000000, t.run(arr, 1));
+    }
+
+    /**
+     * @title get int from array
+     */
+    public void testN2() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        arr[0] = 100000000;
+        assertEquals(100000000, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        int[] arr = new int[2];
+        T_aget_8 t = new T_aget_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_1 t = new T_aget_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.d
new file mode 100644
index 0000000..549fdb5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_1.java
+.class public dot.junit.opcodes.aget.d.T_aget_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.java
new file mode 100644
index 0000000..75a2874
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget.d;
+
+public class T_aget_1 {
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.d
new file mode 100644
index 0000000..2d31759
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_2.java
+.class public dot.junit.opcodes.aget.d.T_aget_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ID)I
+.limit regs 9
+
+       aget v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.d
new file mode 100644
index 0000000..72731ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_3.java
+.class public dot.junit.opcodes.aget.d.T_aget_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IJ)I
+.limit regs 9
+
+       aget v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.d
new file mode 100644
index 0000000..8e3b970
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_4.java
+.class public dot.junit.opcodes.aget.d.T_aget_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.d
new file mode 100644
index 0000000..e0d2005
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_5.java
+.class public dot.junit.opcodes.aget.d.T_aget_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.d
new file mode 100644
index 0000000..41a009c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_6.java
+.class public dot.junit.opcodes.aget.d.T_aget_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.d
new file mode 100644
index 0000000..8b2c021
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_7.java
+.class public dot.junit.opcodes.aget.d.T_aget_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.limit regs 9
+
+       aget v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.d
new file mode 100644
index 0000000..e91d276
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_8.java
+.class public dot.junit.opcodes.aget.d.T_aget_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IF)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.java
new file mode 100644
index 0000000..1174ced
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget.d;
+
+public class T_aget_8 {
+    public int run(int[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.d
new file mode 100644
index 0000000..51fe7a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_9.java
+.class public dot.junit.opcodes.aget.d.T_aget_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.limit regs 9
+
+       aget v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/Test_aget_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/Test_aget_boolean.java
new file mode 100644
index 0000000..3d8bd6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/Test_aget_boolean.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_boolean.d.T_aget_boolean_1;
+import dot.junit.opcodes.aget_boolean.d.T_aget_boolean_8;
+
+public class Test_aget_boolean extends DxTestCase {
+    /**
+     * @title get boolean from array 
+     */
+    public void testN1() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        arr[1] = true;
+        assertEquals(true, t.run(arr, 1));
+    }
+
+    /**
+     * @title get boolean from array
+     */
+    public void testN2() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        arr[0] = true;
+        assertEquals(true, t.run(arr, 0));
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        boolean[] arr = new boolean[2];
+        T_aget_boolean_8 t = new T_aget_boolean_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d
new file mode 100644
index 0000000..6fbf9bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_1.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.java
new file mode 100644
index 0000000..5ab595d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_boolean.d;
+
+public class T_aget_boolean_1 {
+    public boolean run(boolean[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d
new file mode 100644
index 0000000..e858a8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_2.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZD)Z
+.limit regs 9
+
+       aget-boolean v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d
new file mode 100644
index 0000000..07133df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_3.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZJ)Z
+.limit regs 9
+
+       aget-boolean v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d
new file mode 100644
index 0000000..28f6cb1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_4.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d
new file mode 100644
index 0000000..e1c1ffe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_5.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d
new file mode 100644
index 0000000..ef79c81
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_6.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d
new file mode 100644
index 0000000..da3663c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_7.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d
new file mode 100644
index 0000000..5c36f5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_8.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZF)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.java
new file mode 100644
index 0000000..ff40523
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_boolean.d;
+
+public class T_aget_boolean_8 {
+    public boolean run(boolean[] arr, float idx) {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d
new file mode 100644
index 0000000..cbd51e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_9.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/Test_aget_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/Test_aget_byte.java
new file mode 100644
index 0000000..fcaeab4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/Test_aget_byte.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_byte.d.T_aget_byte_1;
+import dot.junit.opcodes.aget_byte.d.T_aget_byte_8;
+
+
+public class Test_aget_byte extends DxTestCase {
+    /**
+     * @title get byte from array
+     */
+    public void testN1() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        arr[1] = 100;
+        assertEquals(100, t.run(arr, 1));
+    }
+
+    /**
+     * @title get byte from array
+     */
+    public void testN2() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        arr[0] = 100;
+        assertEquals(100, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+         byte[] arr = new byte[2];
+         T_aget_byte_8 t = new T_aget_byte_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, short
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d
new file mode 100644
index 0000000..2fa8a9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_1.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.java
new file mode 100644
index 0000000..72646a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_byte.d;
+
+public class T_aget_byte_1 {
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d
new file mode 100644
index 0000000..11eba1a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_2.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       const-wide v1, 1.0
+       aget-byte v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d
new file mode 100644
index 0000000..c2b426b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_3.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       const-wide v1, 1
+       aget-byte v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d
new file mode 100644
index 0000000..905f4b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_4.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d
new file mode 100644
index 0000000..b65b94e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_5.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d
new file mode 100644
index 0000000..6861fa4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_6.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d
new file mode 100644
index 0000000..03ab879
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_7.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       aget-byte v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d
new file mode 100644
index 0000000..92f0273
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_8.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BF)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.java
new file mode 100644
index 0000000..af7c391
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_byte.d;
+
+public class T_aget_byte_8 {
+    public byte run(byte[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d
new file mode 100644
index 0000000..b2d4ffd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_9.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       aget-byte v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/Test_aget_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/Test_aget_char.java
new file mode 100644
index 0000000..8871a9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/Test_aget_char.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_char.d.T_aget_char_1;
+import dot.junit.opcodes.aget_char.d.T_aget_char_8;
+
+public class Test_aget_char extends DxTestCase {
+    /**
+     * @title get char from array 
+     */
+    public void testN1() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        arr[1] = 'g';
+        assertEquals('g', t.run(arr, 1));
+    }
+
+    /**
+     * @title get char from array
+     */
+    public void testN2() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        arr[0] = 'g';
+        assertEquals('g', t.run(arr, 0));
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        char[] arr = new char[2];
+        T_aget_char_8 t = new T_aget_char_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_char_1 t = new T_aget_char_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, char
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], char
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d
new file mode 100644
index 0000000..0789458
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_1.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.java
new file mode 100644
index 0000000..b15a052
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_char.d;
+
+public class T_aget_char_1 {
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d
new file mode 100644
index 0000000..ff1b8fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_2.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CD)C
+.limit regs 9
+
+       aget-char v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d
new file mode 100644
index 0000000..b197a3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_3.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CJ)C
+.limit regs 9
+
+       aget-char v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d
new file mode 100644
index 0000000..53904af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_4.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d
new file mode 100644
index 0000000..ed9a20d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_5.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d
new file mode 100644
index 0000000..04cee20
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_6.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d
new file mode 100644
index 0000000..508f6fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_7.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.limit regs 9
+
+       aget-char v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d
new file mode 100644
index 0000000..daaa044
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_8.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CF)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.java
new file mode 100644
index 0000000..8cf681a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_char.d;
+
+public class T_aget_char_8 {
+    public char run(char[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d
new file mode 100644
index 0000000..4053996
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_9.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.limit regs 9
+
+       aget-char v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/Test_aget_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/Test_aget_object.java
new file mode 100644
index 0000000..691c57c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/Test_aget_object.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_object.d.T_aget_object_1;
+import dot.junit.opcodes.aget_object.d.T_aget_object_8;
+
+
+public class Test_aget_object extends DxTestCase {
+     /**
+     * @title get reference from array
+     */
+    public void testN1() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        assertEquals("a", t.run(arr, 0));
+    }
+
+    /**
+     * @title  get reference from array
+     */
+    public void testN2() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        assertEquals("b", t.run(arr, 1));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        String[] arr = new String[] {"a", "b"};
+        T_aget_object_8 t = new T_aget_object_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aioobe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE2() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aioobe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = null;
+        try {
+            t.run(arr, 0);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float[], int
+     */
+    public void testVFE4() {
+        try { 
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d
new file mode 100644
index 0000000..8f4a03b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_1.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.java
new file mode 100644
index 0000000..03345c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_object.d;
+
+public class T_aget_object_1 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d
new file mode 100644
index 0000000..cbdd6b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_2.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       const-wide v1, 1.0
+       aget-object v0, v7, v1
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d
new file mode 100644
index 0000000..c89b572
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_3.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       const-wide v1, 1
+       aget-object v0, v7, v1
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d
new file mode 100644
index 0000000..b881a16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_4.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d
new file mode 100644
index 0000000..7db8d5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_5.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([FI)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d
new file mode 100644
index 0000000..a349943
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_6.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d
new file mode 100644
index 0000000..8b904d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_7.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v6
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d
new file mode 100644
index 0000000..89ee37d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_8.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;F)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.java
new file mode 100644
index 0000000..c8b33e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_object.d;
+
+public class T_aget_object_8 {
+    
+    public String run(String [] arr, float idx) {
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d
new file mode 100644
index 0000000..e977101
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_9.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v9
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/Test_aget_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/Test_aget_short.java
new file mode 100644
index 0000000..b0a12e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/Test_aget_short.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_short.d.T_aget_short_1;
+import dot.junit.opcodes.aget_short.d.T_aget_short_8;
+
+public class Test_aget_short extends DxTestCase {
+    /**
+     * @title get short from array
+     */
+    public void testN1() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        arr[1] = 10000;
+        assertEquals(10000, t.run(arr, 1));
+    }
+
+    /**
+     * @title  get short from array
+     */
+    public void testN2() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        arr[0] = 10000;
+        assertEquals(10000, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        short[] arr = new short[2];
+        T_aget_short_8 t = new T_aget_short_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_short_1 t = new T_aget_short_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d
new file mode 100644
index 0000000..3a1d451
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_1.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.java
new file mode 100644
index 0000000..d3ff01a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_short.d;
+
+public class T_aget_short_1 {
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d
new file mode 100644
index 0000000..67bb914
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_2.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       const-wide v1, 1.0
+       aget-short v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d
new file mode 100644
index 0000000..e55e873
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_3.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       const-wide v1, 1
+       aget-short v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d
new file mode 100644
index 0000000..36e9428
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_4.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d
new file mode 100644
index 0000000..990a231
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_5.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d
new file mode 100644
index 0000000..5490c9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_6.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d
new file mode 100644
index 0000000..06e1029
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_7.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       aget-short v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d
new file mode 100644
index 0000000..92f0d1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_8.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SF)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.java
new file mode 100644
index 0000000..d661d27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_short.d;
+
+public class T_aget_short_8 {
+    public short run(short[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d
new file mode 100644
index 0000000..d337120
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_9.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       aget-short v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/Test_aget_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/Test_aget_wide.java
new file mode 100644
index 0000000..73b3357
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/Test_aget_wide.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_wide.d.T_aget_wide_1;
+import dot.junit.opcodes.aget_wide.d.T_aget_wide_10;
+import dot.junit.opcodes.aget_wide.d.T_aget_wide_2;
+
+
+public class Test_aget_wide extends DxTestCase {
+
+    /**
+     * @title get long from array 
+     */
+    public void testN1() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        arr[1] = 1000000000000000000l;
+        assertEquals(1000000000000000000l, t.run(arr, 1));
+    }
+
+    /**
+     * @title get long from array
+     */
+    public void testN2() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        arr[0] = 1000000000000000000l;
+        assertEquals(1000000000000000000l, t.run(arr, 0));
+    }
+    
+    /**
+     * @title get double from array
+     */
+    public void testN3() {
+        T_aget_wide_2 t = new T_aget_wide_2();
+        double[] arr = new double[2];
+        arr[0] = 3.1415d;
+        assertEquals(3.1415d, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        long[] arr = new long[2];
+        T_aget_wide_10 t = new T_aget_wide_10();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException np) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d
new file mode 100644
index 0000000..08d842a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_1.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.java
new file mode 100644
index 0000000..fdc8575
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_wide.d;
+
+public class T_aget_wide_1 {
+
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d
new file mode 100644
index 0000000..5bbac0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_10.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JF)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.java
new file mode 100644
index 0000000..c5f66a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_wide.d;
+
+public class T_aget_wide_10 {
+
+    public long run(long[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d
new file mode 100644
index 0000000..e174a37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_11.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v7, v6, v7
+       return-wide v7
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d
new file mode 100644
index 0000000..5372845
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_2.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)D
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.java
new file mode 100644
index 0000000..1b2aace
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_wide.d;
+
+public class T_aget_wide_2 {
+
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d
new file mode 100644
index 0000000..cf462df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_3.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       const-wide v2, 1.0
+       aget-wide v0, v6, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d
new file mode 100644
index 0000000..1c407ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_5.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       const-wide v2, 10
+       aget-wide v0, v6, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d
new file mode 100644
index 0000000..39054f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_6.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d
new file mode 100644
index 0000000..ace153e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_7.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d
new file mode 100644
index 0000000..dfe1b21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_8.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v0, v6, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d
new file mode 100644
index 0000000..fe00c45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_9.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v0, v6, v8
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/Test_and_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/Test_and_int.java
new file mode 100644
index 0000000..1422844
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/Test_and_int.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int.d.T_and_int_1;
+import dot.junit.opcodes.and_int.d.T_and_int_5;
+
+
+public class Test_and_int extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(8, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0xfffffff0, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0xcafe, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_5 t = new T_and_int_5();
+        try {
+            t.run(123, 44.44f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.d
new file mode 100644
index 0000000..b1f2984
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_1.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.java
new file mode 100644
index 0000000..72c1c1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int.d;
+
+public class T_and_int_1 {
+
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.d
new file mode 100644
index 0000000..f57ddbc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       and-int v2, v0, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.d
new file mode 100644
index 0000000..033b3af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_3.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 31415
+       and-int v2, v0, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.d
new file mode 100644
index 0000000..9759124
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_4.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int v0, v2, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.d
new file mode 100644
index 0000000..b7480ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_5.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       and-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.java
new file mode 100644
index 0000000..4f547a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int.d;
+
+public class T_and_int_5 {
+
+    public int run(int i, float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.d
new file mode 100644
index 0000000..7a3d212
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_6.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/Test_and_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/Test_and_int_2addr.java
new file mode 100644
index 0000000..bc8848b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/Test_and_int_2addr.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_1;
+import dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_5;
+
+public class Test_and_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(8, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0xfffffff0, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0xcafe, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_2addr_5 t = new T_and_int_2addr_5();
+        try {
+            t.run(1, 1.222f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d
new file mode 100644
index 0000000..faf2f0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_1.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.java
new file mode 100644
index 0000000..4df72cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_2addr.d;
+
+public class T_and_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d
new file mode 100644
index 0000000..5906582
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_2.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       and-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d
new file mode 100644
index 0000000..4d26208
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_3.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 31415
+       and-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d
new file mode 100644
index 0000000..6bfff72
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_4.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/2addr v2, v1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d
new file mode 100644
index 0000000..c7183c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_5.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       and-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.java
new file mode 100644
index 0000000..3cbb301
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_2addr.d;
+
+public class T_and_int_2addr_5 {
+
+    public int run(int i, float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d
new file mode 100644
index 0000000..b5d1901
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_6.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/Test_and_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/Test_and_int_lit16.java
new file mode 100644
index 0000000..c1c8bc6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/Test_and_int_lit16.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_5;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_1;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_2;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_3;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_4;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_9;
+
+public class Test_and_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 15 & 8
+     */
+    public void testN1() {
+        T_and_int_lit16_1 t = new T_and_int_lit16_1();
+        assertEquals(8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8 & -8
+     */
+    public void testN2() {
+        T_and_int_lit16_2 t = new T_and_int_lit16_2();
+        assertEquals(-8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_lit16_3 t = new T_and_int_lit16_3();
+        assertEquals(0xcafe, t.run());
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_lit16_9 t = new T_and_int_lit16_9();
+        try {
+            t.run(11.33f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_lit16_4 t = new T_and_int_lit16_4();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_lit16_5 t = new T_and_int_lit16_5();
+        assertEquals(0, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double & int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d
new file mode 100644
index 0000000..ebc9f85
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_1.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 15
+       and-int/lit16 v0, v0, 8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.java
new file mode 100644
index 0000000..1f166e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_1 {
+
+    public int run() {
+        return 15 & 8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d
new file mode 100644
index 0000000..ce46afc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_10.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/lit16 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d
new file mode 100644
index 0000000..a76ada7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_2.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, -7
+       and-int/lit16 v0, v0, -8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.java
new file mode 100644
index 0000000..aa93cc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_2 {
+
+    public int run() {
+        return 0xfffffff8 & -8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d
new file mode 100644
index 0000000..c5f54e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_3.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0xcafe
+       and-int/lit16 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.java
new file mode 100644
index 0000000..93558cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_3 {
+
+    public int run() {
+        return 0xcafe & -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d
new file mode 100644
index 0000000..7f31097
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_4.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0
+       and-int/lit16 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.java
new file mode 100644
index 0000000..12913cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_4 {
+
+    public int run() {
+        return 0 & -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d
new file mode 100644
index 0000000..d7c68f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_5.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 32767
+       and-int/lit16 v0, v0, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.java
new file mode 100644
index 0000000..04e22b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_5 {
+
+    public int run() {
+        return Short.MAX_VALUE & Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d
new file mode 100644
index 0000000..9c94b7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_6.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1.0
+       and-int/lit16 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d
new file mode 100644
index 0000000..a272dfa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_7.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1
+       and-int/lit16 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d
new file mode 100644
index 0000000..614d2b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_8.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       and-int/lit16 v2, v3, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d
new file mode 100644
index 0000000..23b9e82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_9.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       and-int/lit16 v0, v3, 123
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.java
new file mode 100644
index 0000000..0af1796
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_9 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/Test_and_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/Test_and_int_lit8.java
new file mode 100644
index 0000000..8fb6fbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/Test_and_int_lit8.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_9;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_1;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_2;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_3;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_4;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_5;
+
+public class Test_and_int_lit8 extends DxTestCase {
+    /**
+     * @title Arguments = 15 & 8
+     */
+    public void testN1() {
+        T_and_int_lit8_1 t = new T_and_int_lit8_1();
+        assertEquals(8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8 & -8
+     */
+    public void testN2() {
+        T_and_int_lit8_2 t = new T_and_int_lit8_2();
+        assertEquals(-8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_lit8_3 t = new T_and_int_lit8_3();
+        assertEquals(0xcafe, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_lit8_9 t = new T_and_int_lit8_9();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_lit8_4 t = new T_and_int_lit8_4();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_lit8_5 t = new T_and_int_lit8_5();
+        assertEquals(0, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d
new file mode 100644
index 0000000..c357564
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_1.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 15
+       and-int/lit8 v0, v0, 8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.java
new file mode 100644
index 0000000..e5972bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_1 {
+
+    public int run() {
+        return 15 & 8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d
new file mode 100644
index 0000000..d9a6181
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_10.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/lit8 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d
new file mode 100644
index 0000000..4161d0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_2.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, -7
+       and-int/lit8 v0, v0, -8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.java
new file mode 100644
index 0000000..ed12bb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_2 {
+
+    public int run() {
+        return 0xfffffff8 & -8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d
new file mode 100644
index 0000000..7b5fd5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_3.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0xcafe
+       and-int/lit8 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.java
new file mode 100644
index 0000000..194af5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_3 {
+
+    public int run() {
+        return 0xcafe & -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d
new file mode 100644
index 0000000..5b2fd88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_4.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0
+       and-int/lit8 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.java
new file mode 100644
index 0000000..ac41a53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_4 {
+
+    public int run() {
+        return 0 & -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d
new file mode 100644
index 0000000..9634339
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_5.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 127
+       and-int/lit8 v0, v0, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.java
new file mode 100644
index 0000000..7d1e6d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_5 {
+
+    public int run() {
+        return Short.MAX_VALUE & Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d
new file mode 100644
index 0000000..7e6a548
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_6.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1.0
+       and-int/lit8 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d
new file mode 100644
index 0000000..e09f8bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_7.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1
+       and-int/lit8 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d
new file mode 100644
index 0000000..78936ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_8.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       and-int/lit8 v2, v3, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d
new file mode 100644
index 0000000..cb63071
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_9.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       and-int/lit8 v0, v3, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.java
new file mode 100644
index 0000000..27542f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_9 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/Test_and_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/Test_and_long.java
new file mode 100644
index 0000000..e2ab252
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/Test_and_long.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_long.d.T_and_long_1;
+import dot.junit.opcodes.and_long.d.T_and_long_6;
+
+public class Test_and_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 0xfffffff8aal, 0xfffffff1aal
+     */
+    public void testN1() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0xfffffff0aal, t.run(0xfffffff8aal, 0xfffffff1aal));
+    }
+
+    /**
+     * @title Arguments = 987654321, 123456789
+     */
+    public void testN2() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(39471121, t.run(987654321, 123456789));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEF & -1
+     */
+    public void testN3() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0xABCDEF, t.run(0xABCDEF, -1));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this (long & double) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_and_long_6 t = new T_and_long_6();
+        try {
+            t.run(1l, 5d);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.d
new file mode 100644
index 0000000..9bdc34e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_1.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.java
new file mode 100644
index 0000000..9e2b07b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long.d;
+
+public class T_and_long_1 {
+
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.d
new file mode 100644
index 0000000..7c9185c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 3.1415
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.d
new file mode 100644
index 0000000..b68acff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_3.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 12345
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.d
new file mode 100644
index 0000000..97a1bcb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_4.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long v0, v9, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.d
new file mode 100644
index 0000000..b6948ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_5.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.d
new file mode 100644
index 0000000..26ae8a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_6.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+
+       and-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.java
new file mode 100644
index 0000000..051a52a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long.d;
+
+public class T_and_long_6 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/Test_and_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/Test_and_long_2addr.java
new file mode 100644
index 0000000..34d2fc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/Test_and_long_2addr.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_1;
+import dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_6;
+
+public class Test_and_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 0xfffffff8aal, 0xfffffff1aal
+     */
+    public void testN1() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0xfffffff0aal, t.run(0xfffffff8aal, 0xfffffff1aal));
+    }
+
+    /**
+     * @title Arguments = 987654321, 123456789
+     */
+    public void testN2() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(39471121, t.run(987654321, 123456789));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEF & -1
+     */
+    public void testN3() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0xABCDEF, t.run(0xABCDEF, -1));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this (long & double) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_and_long_2addr_6 t = new T_and_long_2addr_6();
+        try {
+            t.run(1l, 3.1d);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d
new file mode 100644
index 0000000..aa61af9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_1.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.java
new file mode 100644
index 0000000..3b6d259
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long_2addr.d;
+
+public class T_and_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d
new file mode 100644
index 0000000..e1a4376
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_2.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 3.1415
+       and-long/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d
new file mode 100644
index 0000000..ba10fe6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_3.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 1234
+       and-long/2addr v12, v0
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d
new file mode 100644
index 0000000..9882eb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_4.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long/2addr v12, v9
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d
new file mode 100644
index 0000000..e7bb059
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_5.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d
new file mode 100644
index 0000000..b7ee27e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_6.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+
+       and-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.java
new file mode 100644
index 0000000..dd6a41d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long_2addr.d;
+
+public class T_and_long_2addr_6 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/Test_aput.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/Test_aput.java
new file mode 100644
index 0000000..52ea328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/Test_aput.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput.d.T_aput_1;
+import dot.junit.opcodes.aput.d.T_aput_8;
+
+public class Test_aput extends DxTestCase {
+
+    /**
+     * @title put int into array
+     */
+    public void testN1() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        t.run(arr, 1, 100000000);
+        assertEquals(100000000, arr[1]);
+    }
+
+    /**
+     * @title put int into array
+     */
+    public void testN2() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        t.run(arr, 0, 100000000);
+        assertEquals(100000000, arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        int[] arr = new int[2];
+        T_aput_8 t = new T_aput_8();
+        try {
+            t.run(arr, 3.14f, 111f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, 2, 100000000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_1 t = new T_aput_1();
+        try {
+            t.run(null, 2, 100000000);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, -1, 100000000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.d
new file mode 100644
index 0000000..0c46208
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_1.java
+.class public dot.junit.opcodes.aput.d.T_aput_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.limit regs 11
+
+       aput v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.java
new file mode 100644
index 0000000..d9c47a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput.d;
+
+public class T_aput_1 {
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.d
new file mode 100644
index 0000000..7ef7585
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_2.java
+.class public dot.junit.opcodes.aput.d.T_aput_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IDI)V
+.limit regs 11
+
+
+       aput v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.d
new file mode 100644
index 0000000..f2872a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_3.java
+.class public dot.junit.opcodes.aput.d.T_aput_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IIJ)V
+.limit regs 11
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.d
new file mode 100644
index 0000000..6070220
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_4.java
+.class public dot.junit.opcodes.aput.d.T_aput_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;II)V
+.limit regs 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.d
new file mode 100644
index 0000000..9a37f62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_5.java
+.class public dot.junit.opcodes.aput.d.T_aput_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DII)V
+.limit regs 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.d
new file mode 100644
index 0000000..82dc6ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_6.java
+.class public dot.junit.opcodes.aput.d.T_aput_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JII)V
+.limit regs 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.d
new file mode 100644
index 0000000..66017e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_7.java
+.class public dot.junit.opcodes.aput.d.T_aput_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.limit regs 10
+
+       aput v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.d
new file mode 100644
index 0000000..1f56222
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_8.java
+.class public dot.junit.opcodes.aput.d.T_aput_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IFF)V
+.limit regs 11
+
+       aput v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.java
new file mode 100644
index 0000000..87c6e5c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput.d;
+
+public class T_aput_8 {
+    public void run(int[] arr, float idx, float value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.d
new file mode 100644
index 0000000..73c5932
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_9.java
+.class public dot.junit.opcodes.aput.d.T_aput_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.limit regs 11
+
+       aput v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java
new file mode 100644
index 0000000..0ab9d04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_boolean.d.T_aput_boolean_1;
+import dot.junit.opcodes.aput_boolean.d.T_aput_boolean_8;
+
+public class Test_aput_boolean extends DxTestCase {
+    /**  
+     * @title put boolean into array 
+     */
+    public void testN1() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        t.run(arr, 1, true);
+        assertEquals(true, arr[1]);
+    }
+
+    /**
+     * @title put boolean into array
+     */
+    public void testN2() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        t.run(arr, 0, true);
+        assertEquals(true, arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        boolean[] arr = new boolean[2];
+        T_aput_boolean_8 t = new T_aput_boolean_8();
+        try {
+            t.run(arr, 3.14f, true);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, 2, true);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        try {
+            t.run(null, 2, true);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, -1, true);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B15 
+     * @title put value 2 into boolean array
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d
new file mode 100644
index 0000000..0d97f3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_1.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 11
+
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.java
new file mode 100644
index 0000000..15a0fcf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_boolean.d;
+
+public class T_aput_boolean_1 {
+    public void run(boolean[] arr, int idx, boolean value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d
new file mode 100644
index 0000000..64eb60e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_10.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 11
+
+       const v10, 2
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d
new file mode 100644
index 0000000..2f73747
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_2.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZDZ)V
+.limit regs 11
+
+
+       aput-boolean v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d
new file mode 100644
index 0000000..9eae917
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_3.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIJ)V
+.limit regs 11
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d
new file mode 100644
index 0000000..54f5a19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_4.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IZ)V
+.limit regs 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d
new file mode 100644
index 0000000..ecaf950
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_5.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIZ)V
+.limit regs 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d
new file mode 100644
index 0000000..db2bf25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_6.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIZ)V
+.limit regs 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d
new file mode 100644
index 0000000..7e9ed2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_7.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 10
+
+       aput-boolean v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d
new file mode 100644
index 0000000..bf92b91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_8.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZFZ)V
+.limit regs 11
+
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.java
new file mode 100644
index 0000000..09606e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_boolean.d;
+
+public class T_aput_boolean_8 {
+    public void run(boolean[] arr, float idx, boolean value) {
+        
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d
new file mode 100644
index 0000000..e42fd3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_9.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 11
+
+       aput-boolean v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java
new file mode 100644
index 0000000..3c43916
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_byte.d.T_aput_byte_1;
+import dot.junit.opcodes.aput_byte.d.T_aput_byte_8;
+
+public class Test_aput_byte extends DxTestCase {
+    /**
+     * @title put byte into array
+     */
+    public void testN1() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        t.run(arr, 1, (byte) 100);
+        assertEquals(100, arr[1]);
+    }
+
+    /**
+     * @title put byte into array
+     */
+    public void testN2() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        t.run(arr, 0, (byte) 100);
+        assertEquals(100, arr[0]);
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        byte[] arr = new byte[2];
+        T_aput_byte_8 t = new T_aput_byte_8();
+        try {
+            t.run(arr, 3.14f, (byte)1);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, 2, (byte) 100);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        try {
+            t.run(null, 2, (byte) 100);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, -1, (byte) 100);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, short
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, short
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, short
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, short
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, short
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B15 
+     * @title put value 128 into byte array
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d
new file mode 100644
index 0000000..097ae50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_1.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 11
+
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.java
new file mode 100644
index 0000000..57561be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_byte.d;
+
+public class T_aput_byte_1 {
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d
new file mode 100644
index 0000000..b65ae76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_10.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 11
+
+       const v10, 128
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d
new file mode 100644
index 0000000..55f781e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_2.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BDB)V
+.limit regs 11
+
+
+       aput-byte v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d
new file mode 100644
index 0000000..5684437
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_3.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIJ)V
+.limit regs 11
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d
new file mode 100644
index 0000000..06e4eff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_4.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IB)V
+.limit regs 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d
new file mode 100644
index 0000000..2835e5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_5.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIB)V
+.limit regs 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d
new file mode 100644
index 0000000..66da57c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_6.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIB)V
+.limit regs 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d
new file mode 100644
index 0000000..4fb862b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_7.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 10
+
+       aput-byte v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d
new file mode 100644
index 0000000..0c4914e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_8.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BFB)V
+.limit regs 11
+
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.java
new file mode 100644
index 0000000..00f9d64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_byte.d;
+
+public class T_aput_byte_8 {
+    public void run(byte[] arr, float idx, byte value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d
new file mode 100644
index 0000000..e644e87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_9.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 11
+
+       aput-byte v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/Test_aput_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/Test_aput_char.java
new file mode 100644
index 0000000..4253346
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/Test_aput_char.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_char.d.T_aput_char_1;
+import dot.junit.opcodes.aput_char.d.T_aput_char_8;
+
+
+public class Test_aput_char extends DxTestCase {
+    /**
+     * @title put char into array
+     */
+    public void testN1() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        t.run(arr, 1, 'g');
+        assertEquals('g', arr[1]);
+    }
+
+    /**
+     * @title put char into array
+     */
+    public void testN2() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        t.run(arr, 0, 'g');
+        assertEquals('g', arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        char[] arr = new char[2];
+        T_aput_char_8 t = new T_aput_char_8();
+        try {
+            t.run(arr, 3.14f, 'g');
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, 2, 'g');
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_char_1 t = new T_aput_char_1();
+        try {
+            t.run(null, 2, 'g');
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, -1, 'g');
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+ 
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, char
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, char
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, char
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, char
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, char
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B15 
+     * @title put value 65536 into char array
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d
new file mode 100644
index 0000000..409eade
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_1.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 11
+
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.java
new file mode 100644
index 0000000..65f4cd3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_char.d;
+
+public class T_aput_char_1 {
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d
new file mode 100644
index 0000000..dd68792
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_10.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 11
+
+       const v10, 65536
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d
new file mode 100644
index 0000000..0408006
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_2.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CDC)V
+.limit regs 11
+
+
+       aput-char v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d
new file mode 100644
index 0000000..5010da6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_3.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIJ)V
+.limit regs 11
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d
new file mode 100644
index 0000000..67d67ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_4.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IC)V
+.limit regs 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d
new file mode 100644
index 0000000..cd0384a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_5.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIC)V
+.limit regs 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d
new file mode 100644
index 0000000..2a2381d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_6.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIC)V
+.limit regs 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d
new file mode 100644
index 0000000..b1e4c9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_7.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 10
+
+       aput-char v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d
new file mode 100644
index 0000000..f78376d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_8.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CFC)V
+.limit regs 11
+
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.java
new file mode 100644
index 0000000..ea02ba1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_char.d;
+
+public class T_aput_char_8 {
+    public void run(char[] arr, float idx, char value) {
+        
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d
new file mode 100644
index 0000000..1077039
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_9.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 11
+
+       aput-char v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/Test_aput_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/Test_aput_object.java
new file mode 100644
index 0000000..cb50224
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/Test_aput_object.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_object.d.T_aput_object_1;
+import dot.junit.opcodes.aput_object.d.T_aput_object_12;
+import dot.junit.opcodes.aput_object.d.T_aput_object_2;
+import dot.junit.opcodes.aput_object.d.T_aput_object_3;
+import dot.junit.opcodes.aput_object.d.T_aput_object_4;
+
+public class Test_aput_object extends DxTestCase {
+    /**
+     * @title put reference into array
+     */
+    public void testN1() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = new String[2];
+        t.run(arr, 0, "hello");
+        assertEquals("hello", arr[0]);
+    }
+
+    /**
+     * @title put reference into array
+     */
+    public void testN2() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] value = {"world", null, ""};
+        String[] arr = new String[2];
+        for (int i = 0; i < value.length; i++) {
+            t.run(arr, 1, value[i]);
+            assertEquals(value[i], arr[1]);
+        }
+    }
+
+    /**
+     * @title put reference into array
+     */
+    public void testN3() {
+        T_aput_object_2 t = new T_aput_object_2();
+        Integer[] arr = new Integer[2];
+        Integer value = new Integer(12345);
+        t.run(arr, 0, value);
+        assertEquals(value, arr[0]);
+    }
+
+    /**
+     * @title Check assignement compatibility rules
+     */
+    public void testN4() {
+        T_aput_object_3 t = new T_aput_object_3();
+        assertEquals(3, t.run());
+
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        String[] arr = new String[2];
+        T_aput_object_12 t = new T_aput_object_12();
+        try {
+            t.run(arr, 3.14f, new String());
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, arr.length, "abc");
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE2() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, -1, "abc");
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = null;
+        try {
+            t.run(arr, 0, "abc");
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayStoreException
+     */
+    public void testE4() {
+        T_aput_object_4 t = new T_aput_object_4();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, 0, t);
+            fail("expected ArrayStoreException");
+        } catch (ArrayStoreException aie) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, String
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, String
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float[], int, String
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, String
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, String
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B15 
+     * @title put integer into array of references
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d
new file mode 100644
index 0000000..c629f3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_1.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.java
new file mode 100644
index 0000000..1361e82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_1 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d
new file mode 100644
index 0000000..a11e1ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_10.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 10
+
+       aput-object v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d
new file mode 100644
index 0000000..1b4f7ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_11.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 11
+
+       aput-object v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d
new file mode 100644
index 0000000..35160aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_12.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;FLjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.java
new file mode 100644
index 0000000..f55edbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_12 {
+
+    public void run(String[] arr, float idx, String value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d
new file mode 100644
index 0000000..f9670ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_13.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 11
+
+       const v10, 1
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d
new file mode 100644
index 0000000..4e1cad0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_2.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Integer;ILjava/lang/Integer;)V
+.limit regs 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.java
new file mode 100644
index 0000000..4b2204e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_2 {
+    
+    public void run(Integer[] arr, int idx, Integer value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d
new file mode 100644
index 0000000..4b2642d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d
@@ -0,0 +1,132 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestStubs.java
+.interface abstract dot.junit.opcodes.aput_object.d.SuperInterface
+
+.source TestStubs.java
+.interface public dot.junit.opcodes.aput_object.d.SuperInterface2
+    
+.source TestStubs.java    
+.class public dot.junit.opcodes.aput_object.d.SuperClass 
+.super java/lang/Object
+.implements dot.junit.opcodes.aput_object.d.SuperInterface
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+    
+.source TestStubs.java
+.class public dot.junit.opcodes.aput_object.d.SubClass 
+.super dot.junit.opcodes.aput_object.d.SuperClass
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/aput_object/d/SuperClass/<init>()V
+       return-void
+.end method
+
+
+.source T_aput_object_3.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 32
+
+    const v1, 0
+
+    const v0, 1
+    ; v2 = SubClass[]
+    new-array v2, v0, [Ldot/junit/opcodes/aput_object/d/SubClass;
+    
+    ; v3 =  SuperClass[]
+    new-array v3, v0, [Ldot/junit/opcodes/aput_object/d/SuperClass;
+
+    ; v4 =     SubClass
+    new-instance v4, dot/junit/opcodes/aput_object/d/SubClass
+    invoke-direct {v4}, dot/junit/opcodes/aput_object/d/SubClass/<init>()V
+
+    ; v5 =     SuperClass
+    new-instance v5, dot/junit/opcodes/aput_object/d/SuperClass
+    invoke-direct {v5}, dot/junit/opcodes/aput_object/d/SuperClass/<init>()V
+
+    ; v6 = SuperInterface[]
+    new-array v6, v0, [Ldot/junit/opcodes/aput_object/d/SuperInterface;
+
+    ; v7 =     Object[]
+    new-array v7, v0, [Ljava/lang/Object;
+    
+    ; v8 = SuperInterface2[]
+    new-array v8, v0, [Ldot/junit/opcodes/aput_object/d/SuperInterface2;
+    
+    const/4 v0, 0
+    
+; (SubClass -> SuperClass[])
+    aput-object v4, v3, v0
+    
+; (SubClass -> SuperInterface[])
+    aput-object v4, v6, v0
+    
+; (SubClass -> Object[])
+    aput-object v4, v7, v0
+        
+; !(SuperClass -> SubClass[])    
+Label10:        
+    aput-object v5, v2, v0
+Label11:    
+    goto Label2
+Label12:
+    add-int/lit8 v1, v1, 1
+    goto Label2
+        
+; !(SuperClass -> SuperInterface2[])    
+Label2:
+Label20:    
+    aput-object v5, v8, v0
+Label21:    
+    goto Label3
+Label22:
+    add-int/lit8 v1, v1, 1
+    goto Label3
+
+; !(SubClass[] -> SuperInterface[])    
+Label3:
+Label30:    
+    aput-object v2, v6, v0
+Label31:    
+    goto Label4
+Label32:    
+    add-int/lit8 v1, v1, 1
+    goto Label4
+
+Label4:
+    return v1
+    
+.catch java/lang/ArrayStoreException from Label10 to Label11 using Label12
+.catch java/lang/ArrayStoreException from Label20 to Label21 using Label22
+.catch java/lang/ArrayStoreException from Label30 to Label31 using Label32
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.java
new file mode 100644
index 0000000..1a90fd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_3 {
+    
+    public int run() {
+        return 3;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d
new file mode 100644
index 0000000..f79b817
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_4.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/Object;)V
+.limit regs 11
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.java
new file mode 100644
index 0000000..52e935b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_4 {
+
+//  public void run(Integer[] arr, int idx) {
+    /* similar to
+     * Object x[] = new String[3];
+     * x[0] = new Integer(0);
+     */
+//  }
+    
+    public void run(String[] arr, int idx, Object a) {
+        //arr[idx] = a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d
new file mode 100644
index 0000000..441ac56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_5.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;DLjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d
new file mode 100644
index 0000000..5786bbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_6.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;IJ)V
+.limit regs 11
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d
new file mode 100644
index 0000000..dfdc953
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_7.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;ILjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d
new file mode 100644
index 0000000..e6259bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_8.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([FILjava/lang/String;)V
+.limit regs 10
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d
new file mode 100644
index 0000000..96bced3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_9.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JILjava/lang/String;)V
+.limit regs 10
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/Test_aput_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/Test_aput_short.java
new file mode 100644
index 0000000..350d999
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/Test_aput_short.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_short.d.T_aput_short_1;
+import dot.junit.opcodes.aput_short.d.T_aput_short_8;
+
+public class Test_aput_short extends DxTestCase {
+    /**
+     * @title put short into array
+     */
+    public void testN1() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        t.run(arr, 1, (short) 10000);
+        assertEquals(10000, arr[1]);
+    }
+
+    /**
+     * @title put short into array
+     */
+    public void testN2() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        t.run(arr, 0, (short) 10000);
+        assertEquals(10000, arr[0]);
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        short[] arr = new short[2];
+        T_aput_short_8 t = new T_aput_short_8();
+        try {
+            t.run(arr, 3.14f, (short)111);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, 2, (short) 10000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_short_1 t = new T_aput_short_1();
+        try {
+            t.run(null, 2, (short) 10000);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, -1, (short) 10000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B15 
+     * @title put value 32768 into array of shorts
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d
new file mode 100644
index 0000000..f89cbb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_1.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 11
+
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.java
new file mode 100644
index 0000000..42cefa9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_short.d;
+
+public class T_aput_short_1 {
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d
new file mode 100644
index 0000000..bbb541c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_10.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 11
+
+       const v10, 32768    
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d
new file mode 100644
index 0000000..9d63757
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_2.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SDS)V
+.limit regs 11
+
+
+       aput-short v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d
new file mode 100644
index 0000000..c9990b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_3.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIJ)V
+.limit regs 11
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d
new file mode 100644
index 0000000..24b2d92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_4.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IS)V
+.limit regs 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d
new file mode 100644
index 0000000..4a9dabc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_5.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIS)V
+.limit regs 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d
new file mode 100644
index 0000000..ed8cfd3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_6.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIS)V
+.limit regs 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d
new file mode 100644
index 0000000..9927025
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_7.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 10
+
+       aput-short v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d
new file mode 100644
index 0000000..099de06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_8.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SFS)V
+.limit regs 11
+
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.java
new file mode 100644
index 0000000..e973865
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_short.d;
+
+public class T_aput_short_8 {
+    public void run(short[] arr, float idx, short value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d
new file mode 100644
index 0000000..46efab3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_9.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 11
+
+       aput-short v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/Test_aput_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/Test_aput_wide.java
new file mode 100644
index 0000000..4b7f0ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/Test_aput_wide.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_1;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_2;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_6;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_9;
+
+
+public class Test_aput_wide extends DxTestCase {
+    /**
+     * @title put long into array
+     */
+    public void testN1() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        t.run(arr, 1, 100000000000l);
+        assertEquals(100000000000l, arr[1]);
+    }
+
+    /**
+     * @title put long into array
+     */
+    public void testN2() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        t.run(arr, 0, 100000000000l);
+        assertEquals(100000000000l, arr[0]);
+    }
+
+    /**
+     * @title put double into array
+     */
+    public void testN3() {
+        T_aput_wide_2 t = new T_aput_wide_2();
+        double[] arr = new double[2];
+        t.run(arr, 0, 3.1415d);
+        assertEquals(3.1415d, arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 64-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        long[] arr = new long[2];
+        T_aput_wide_9 t = new T_aput_wide_9();
+        try {
+            t.run(arr, 3.14f, 111);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Try to put long into double[]. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation makes no sense but shall not crash the VM.
+     */
+    public void testN5() {
+        double[] arr = new double[2];
+        T_aput_wide_6 t = new T_aput_wide_6();
+        try {
+            t.run(arr, 0, 1234l);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, 2, 100000000000l);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        try {
+            t.run(null, 1, 100000000000l);
+            fail("expected NullPointerException");
+        } catch (NullPointerException np) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, -1, 100000000000l);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int, long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d
new file mode 100644
index 0000000..2890417
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_1.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.java
new file mode 100644
index 0000000..385db2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_1 {
+
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d
new file mode 100644
index 0000000..bf314a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_10.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.limit regs 14
+
+       aput-wide v14, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d
new file mode 100644
index 0000000..793338f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_2.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DID)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.java
new file mode 100644
index 0000000..e333794
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_2 {
+
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d
new file mode 100644
index 0000000..4486392
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_3.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JDJ)V
+.limit regs 14
+
+       aput-wide v12, v9, v10
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d
new file mode 100644
index 0000000..980724f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_4.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JII)V
+.limit regs 14
+
+       aput-wide v13, v11, v12
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d
new file mode 100644
index 0000000..f4d3354
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_5.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d
new file mode 100644
index 0000000..e5f58d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_6.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.java
new file mode 100644
index 0000000..d1466a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_6 {
+
+    public void run(double[] arr, int idx, long value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d
new file mode 100644
index 0000000..c862b0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_7.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d
new file mode 100644
index 0000000..06e1aa0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_8.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d
new file mode 100644
index 0000000..41777df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_9.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JFJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.java
new file mode 100644
index 0000000..c08f9be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_9 {
+
+    public void run(long[] arr, float idx, long value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/Test_array_length.java b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/Test_array_length.java
new file mode 100644
index 0000000..f49cccb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/Test_array_length.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.array_length;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.array_length.d.T_array_length_1;
+import dot.junit.opcodes.array_length.d.T_array_length_4;
+
+
+public class Test_array_length extends DxTestCase {
+    /**
+     * @title get length of array of references
+     */
+    public void testN1() {
+        T_array_length_1 t = new T_array_length_1();
+        String[] a = new String[5];
+        assertEquals(5, t.run(a));
+    }
+    
+    /**
+     * @title get length of array of doubles
+     */
+    public void testN2() {
+        T_array_length_4 t = new T_array_length_4();
+        double[] a = new double[10];
+        assertEquals(10, t.run(a));
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testNPE1() {
+        T_array_length_1 t = new T_array_length_1();
+        try {
+            t.run(null);
+            fail("NPE expected");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.array_length.jm.T_array_length_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.array_length.jm.T_array_length_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.array_length.jm.T_array_length_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.d
new file mode 100644
index 0000000..3981009
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_array_length_1.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)I
+.limit regs 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.java
new file mode 100644
index 0000000..fd30072
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.array_length.d;
+
+public class T_array_length_1 {
+
+    public int run(Object[] arr) {
+        return arr.length;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.d
new file mode 100644
index 0000000..b1b015c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_array_length_2.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.d
new file mode 100644
index 0000000..01bdaf0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_array_length_3.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 5
+    
+       const v4, 1234
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.d
new file mode 100644
index 0000000..af48dfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_array_length_4.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([D)I
+.limit regs 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.java
new file mode 100644
index 0000000..b3fa51f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.array_length.d;
+
+public class T_array_length_4 {
+
+    public int run(double[] arr) {
+        return arr.length;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.d
new file mode 100644
index 0000000..c7b1f9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_array_length_5.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)V
+.limit regs 5
+
+       array-length v5, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/TestStubs.java
new file mode 100644
index 0000000..67f8f04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/TestStubs.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast;
+
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/Test_check_cast.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/Test_check_cast.java
new file mode 100644
index 0000000..78a0479
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/Test_check_cast.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.check_cast.d.T_check_cast_1;
+import dot.junit.opcodes.check_cast.d.T_check_cast_2;
+import dot.junit.opcodes.check_cast.d.T_check_cast_3;
+import dot.junit.opcodes.check_cast.d.T_check_cast_7;
+
+
+public class Test_check_cast extends DxTestCase {
+   
+    
+    /**
+     * @title (String)(Object)String
+     */
+    public void testN1() {
+        T_check_cast_1 t = new T_check_cast_1();
+        String s = "";
+        assertEquals(s, t.run(s));
+    }
+
+    /**
+     * @title (String)(Object)null
+     */
+    public void testN2() {
+        T_check_cast_1 t = new T_check_cast_1();
+        assertNull(t.run(null));
+    }
+
+    /**
+     * @title check assignment compatibility rules
+     */
+    public void testN4() {
+        T_check_cast_2 t = new T_check_cast_2();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title expected ClassCastException
+     */
+    public void testE1() {
+        T_check_cast_1 t = new T_check_cast_1();
+        try {
+            t.run(t);
+            fail("expected ClassCastException");
+        } catch (ClassCastException iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A18 
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to access inaccessible class, expect throws IllegalAccessError
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.check_cast.TestStubs
+        //@uses dot.junit.opcodes.check_cast.d.T_check_cast_3
+        T_check_cast_3 t = new T_check_cast_3();
+        try {
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to access undefined class, expect throws NoClassDefFoundError on
+     * first access
+     */
+    public void testVFE6() {
+        T_check_cast_7 t = new T_check_cast_7();
+        try {
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError iae) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint A18 
+     * @title  constant pool type
+     */    
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d
new file mode 100644
index 0000000..9c2f074
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_1.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.limit regs 5
+
+       check-cast v4, java/lang/String
+       return-object v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.java
new file mode 100644
index 0000000..4387def
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_1 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d
new file mode 100644
index 0000000..b7472cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d
@@ -0,0 +1,149 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestStubs.java
+.interface public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperInterface
+
+.source TestStubs.java    
+.interface public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperInterface2
+
+.source TestStubs.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperClass 
+.super java/lang/Object
+.implements dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
+    
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method    
+
+.source TestStubs.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_2.SubClass 
+.super dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass/<init>()V
+       return-void
+.end method
+
+
+.source T_check_cast_2.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 20
+
+    const v1, 0
+    
+; (SubClass instanceof SuperClass)    
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
+    
+; (SubClass[] instanceof SuperClass[])    
+    const v11, 1
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+    check-cast v10, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+
+    
+; (SubClass[] instanceof Object)    
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+    check-cast v10, java/lang/Object
+    
+; (SubClass instanceof SuperInterface)    
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
+        
+
+; !(SuperClass instanceof SubClass)    
+Label1:
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass/<init>()V
+Label10:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+Label11:    
+    goto Label2
+Label12:
+    add-int/lit16 v1, v1, 1
+    goto Label2
+        
+; !(SubClass instanceof SuperInterface2)    
+Label2:
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V    
+Label20:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface2
+Label21:    
+    goto Label3
+Label22:
+    add-int/lit16 v1, v1, 1
+    goto Label3
+
+; !(SubClass[] instanceof SuperInterface)    
+Label3:
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+Label30:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
+Label31:    
+    goto Label4
+Label32:    
+    add-int/lit16 v1, v1, 1
+    goto Label4
+
+; !(SubClass[] instanceof SubClass)    
+Label4:
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+Label40:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+Label41:    
+    goto Label5
+Label42:
+    add-int/lit16 v1, v1, 1
+    goto Label5    
+    
+; !(SuperClass[] instanceof SubClass[])    
+Label5:
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+Label50:    
+    check-cast v10, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+Label51:    
+    goto Label6
+Label52:
+    add-int/lit16 v1, v1, 1
+    
+Label6:        
+    return v1
+    
+.catch java/lang/ClassCastException from Label10 to Label11 using Label12
+.catch java/lang/ClassCastException from Label20 to Label21 using Label22
+.catch java/lang/ClassCastException from Label30 to Label31 using Label32
+.catch java/lang/ClassCastException from Label40 to Label41 using Label42
+.catch java/lang/ClassCastException from Label50 to Label51 using Label52
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.java
new file mode 100644
index 0000000..5e55188
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d
new file mode 100644
index 0000000..d269a31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_3.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+       check-cast v5, dot/junit/opcodes/check_cast/TestStubs
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.java
new file mode 100644
index 0000000..4c4f153
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_3 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d
new file mode 100644
index 0000000..77e28d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_4.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.limit regs 5
+
+       check-cast v4, java/lang/String
+       return-object v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.dfh
new file mode 100644
index 0000000..ed092c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.dfh
@@ -0,0 +1,264 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 1f0a4ad6
+    D6 4A 0A 1F 
+// parsed: offset 12, len 20: signature           : c885...5be2
+    C8 85 20 53 64 78 EF B4 92 49 06 A9 EC FA 7E 44 D0 A3 5B E2 
+// parsed: offset 32, len 4: file_size           : 576
+    40 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 440 (0x0001b8)
+    B8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 336
+    50 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "LL"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 306 (0x000132) "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    32 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "Ljava/lang/Object;"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 375 (0x000177) "Ljava/lang/String;"
+    77 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "T_check_cast_4.java"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 416 (0x0001a0) "V"
+    A0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 419 (0x0001a3) "run"
+    A3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "LL"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 288 (0x000120)
+    01 00 00 00 02 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_check_cast_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 424 (0x0001a8)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: check-cast v4, Ljava/lang/String; // class@0002
+//@mod            1F 04 02 00 
+            1F 04 02 01 
+        // parsed: offset 284, len 2: |0002: return-object v4
+            11 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 4: TYPE_STRING_DATA_ITEM [1] "LL"
+    02 4C 4C 00 
+// parsed: offset 306, len 49: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 68 65 63 6B 5F 63 61 73 74 2F 64 2F 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 34 3B 00 
+// parsed: offset 355, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 375, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 395, len 21: TYPE_STRING_DATA_ITEM [5] "T_check_cast_4.java"
+    13 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 416, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 419, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    // parsed: offset 424, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 425, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 426, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 427, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 429, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 432, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 434, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 435, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 436, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 438, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 440, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 444, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 456, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 468, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 480, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 492, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 504, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 516, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 528, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 552, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 20 00 00 01 00 00 00 A8 01 00 00 
+    // parsed: offset 564, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 440 (0x0001b8)
+        00 10 00 00 01 00 00 00 B8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d
new file mode 100644
index 0000000..b76a68e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_5.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const v3, 1234
+       check-cast v3, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d
new file mode 100644
index 0000000..7e26639
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_6.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       check-cast v5, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d
new file mode 100644
index 0000000..8c7af68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_7.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       check-cast v5, dot/junit/opcodes/check_cast/Test_check_castN
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.java
new file mode 100644
index 0000000..fa941a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d
new file mode 100644
index 0000000..645436f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_8.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const-wide v0, 1234
+       check-cast v0, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d
new file mode 100644
index 0000000..e44cc10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_9.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.limit regs 5
+
+       check-cast v4, java/lang/String
+       return-object v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.dfh
new file mode 100644
index 0000000..419f6e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.dfh
@@ -0,0 +1,264 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_9.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : d6bb4b2e
+    2E 4B BB D6 
+// parsed: offset 12, len 20: signature           : 1ebe...570d
+    1E BE 42 FD BC AF 7F 9D AB 10 86 B8 F1 D5 98 36 F6 E6 57 0D 
+// parsed: offset 32, len 4: file_size           : 576
+    40 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 440 (0x0001b8)
+    B8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 336
+    50 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "LL"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 306 (0x000132) "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    32 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "Ljava/lang/Object;"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 375 (0x000177) "Ljava/lang/String;"
+    77 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "T_check_cast_9.java"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 416 (0x0001a0) "V"
+    A0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 419 (0x0001a3) "run"
+    A3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "LL"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 288 (0x000120)
+    01 00 00 00 02 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_check_cast_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 424 (0x0001a8)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_9.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: check-cast v4, Ljava/lang/String; // class@0002
+//@mod            1F 04 02 00 
+            1F 04 03 00 
+        // parsed: offset 284, len 2: |0002: return-object v4
+            11 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 4: TYPE_STRING_DATA_ITEM [1] "LL"
+    02 4C 4C 00 
+// parsed: offset 306, len 49: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 68 65 63 6B 5F 63 61 73 74 2F 64 2F 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 39 3B 00 
+// parsed: offset 355, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 375, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 395, len 21: TYPE_STRING_DATA_ITEM [5] "T_check_cast_9.java"
+    13 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 416, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 419, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    // parsed: offset 424, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 425, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 426, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 427, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 429, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 432, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 434, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 435, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 436, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 438, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 440, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 444, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 456, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 468, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 480, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 492, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 504, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 516, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 528, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 552, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 20 00 00 01 00 00 00 A8 01 00 00 
+    // parsed: offset 564, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 440 (0x0001b8)
+        00 10 00 00 01 00 00 00 B8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/Test_cmp_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/Test_cmp_long.java
new file mode 100644
index 0000000..e2a1994
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/Test_cmp_long.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmp_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmp_long.d.T_cmp_long_1;
+import dot.junit.opcodes.cmp_long.d.T_cmp_long_2;
+
+public class Test_cmp_long extends DxTestCase {
+    /**
+     * @title Arguments = 111234567891l > 111234567890l
+     */
+    public void testN1() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(111234567891l, 111234567890l));
+    }
+
+    /**
+     * @title Arguments = 112234567890 = 112234567890
+     */
+    public void testN2() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(0, t.run(112234567890l, 112234567890l));
+    }
+
+    /**
+     * @title Arguments = 112234567890 < 998876543210
+     */
+    public void testN3() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(-1, t.run(112234567890l, 998876543210l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this comparison of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+         T_cmp_long_2 t = new T_cmp_long_2();
+        try {
+            t.run(123l, 3.145f);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = Long.MAX_VALUE > Long.MIN_VALUE
+     */
+    public void testB1() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE < Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1 > 0
+     */
+    public void testB3() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(1l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0 > -1
+     */
+    public void testB4() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = -1 < 0
+     */
+    public void testB5() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(-1, t.run(-1l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0 = 0
+     */
+    public void testB6() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(0, t.run(0l, 0l));
+    }
+
+
+    /**
+     * @constraint B1
+     * @title types of arguments - float, long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d
new file mode 100644
index 0000000..60b9654
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_1.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.java
new file mode 100644
index 0000000..10a78e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmp_long.d;
+
+public class T_cmp_long_1 {
+
+    public int run(long a, long b) {
+        if (a > b)   return 1;
+        if (a == b)  return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d
new file mode 100644
index 0000000..e3bdfd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_2.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.limit regs 14
+
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.java
new file mode 100644
index 0000000..4674e7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmp_long.d;
+
+public class T_cmp_long_2 {
+
+    public int run(long a, double b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d
new file mode 100644
index 0000000..3d25d6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_3.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       const v10, 3.1415
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d
new file mode 100644
index 0000000..32c3050
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_4.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       const v10, 1234
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d
new file mode 100644
index 0000000..9e86284
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_5.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       const v10, 1234
+       cmp-long v0, v9, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d
new file mode 100644
index 0000000..15ac1cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_6.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       cmp-long v0, v10, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/Test_cmpg_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/Test_cmpg_double.java
new file mode 100644
index 0000000..fbf47a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/Test_cmpg_double.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpg_double.d.T_cmpg_double_1;
+import dot.junit.opcodes.cmpg_double.d.T_cmpg_double_3;
+
+public class Test_cmpg_double extends DxTestCase {
+    /**
+     * @title Arguments = 3.14d, 2.7d
+     */
+    public void testN1() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, 2.7d
+     */
+    public void testN2() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(-1, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(0, t.run(3.14d, 3.14d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this comparison of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpg_double_3 t = new T_cmpg_double_3();
+        try {
+            t.run(123l, 3.145d);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Arguments = Double.NaN, Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(Double.NaN, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Double.NEGATIVE_INFINITY, Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(-1, t.run(Double.NEGATIVE_INFINITY, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d
new file mode 100644
index 0000000..a76c3b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_1.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.java
new file mode 100644
index 0000000..8488914
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_double.d;
+
+public class T_cmpg_double_1 {
+
+    public int run(double a, double b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d
new file mode 100644
index 0000000..5704511
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_2.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const v14, 3.14
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d
new file mode 100644
index 0000000..78d65ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_3.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.limit regs 16
+
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.java
new file mode 100644
index 0000000..d5b8ca5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_double.d;
+
+public class T_cmpg_double_3 {
+
+    public int run(long a, double b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d
new file mode 100644
index 0000000..e38307c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_4.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const-wide v12, 12356
+       cmpg-double v0, v12, v11
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d
new file mode 100644
index 0000000..bd43151
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_5.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpg-double v0, v12, v16
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d
new file mode 100644
index 0000000..70c7f72
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_6.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 16
+       move v0, v14
+       move v1, v14
+       move v2, v15
+       move v3, v15
+
+       cmpg-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/Test_cmpg_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/Test_cmpg_float.java
new file mode 100644
index 0000000..1ff20a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/Test_cmpg_float.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpg_float.d.T_cmpg_float_1;
+import dot.junit.opcodes.cmpg_float.d.T_cmpg_float_6;
+
+public class Test_cmpg_float extends DxTestCase {
+    /**
+     * @title Arguments = 3.14f, 2.7f
+     */
+    public void testN1() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, 2.7f
+     */
+    public void testN2() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(-1, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(0, t.run(3.14f, 3.14f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this comparison of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpg_float_6 t = new T_cmpg_float_6();
+        try {
+            t.run(123, 3.145f);
+        } catch (Throwable e) {
+        }
+    }      
+    
+    /**
+     * @title Arguments = Float.NaN, Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(Float.NaN, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.NEGATIVE_INFINITY, Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(-1, t.run(Float.NEGATIVE_INFINITY, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d
new file mode 100644
index 0000000..a32772d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_1.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpg-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.java
new file mode 100644
index 0000000..9e3eb7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_float.d;
+
+public class T_cmpg_float_1 {
+
+    public int run(float a, float b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d
new file mode 100644
index 0000000..abaed4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_2.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 3.1414
+       cmpg-float v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d
new file mode 100644
index 0000000..f741d1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_3.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 234234
+       cmpg-float v0, v1, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d
new file mode 100644
index 0000000..f40f08e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_4.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpg-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d
new file mode 100644
index 0000000..46a019a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_5.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpg-float v0, v9, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d
new file mode 100644
index 0000000..1051f14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_6.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 9
+       cmpg-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.java
new file mode 100644
index 0000000..8a785ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_float.d;
+
+public class T_cmpg_float_6 {
+
+    public int run(int a, float b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/Test_cmpl_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/Test_cmpl_double.java
new file mode 100644
index 0000000..9f54c52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/Test_cmpl_double.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpl_double.d.T_cmpl_double_3;
+import dot.junit.opcodes.cmpl_double.d.T_cmpl_double_1;
+
+public class Test_cmpl_double extends DxTestCase {
+    /**
+     * @title Arguments = 3.14d, 2.7d
+     */
+    public void testN1() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(1, t.run(3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, 2.7d
+     */
+    public void testN2() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(-1, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(0, t.run(3.14d, 3.14d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this comparison of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpl_double_3 t = new T_cmpl_double_3();
+        try {
+            t.run(123l, 3.145d);
+        } catch (Throwable e) {
+        }
+    }      
+    
+    /**
+     * @title Arguments = Double.NaN, Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(-1, t.run(Double.NaN, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Double.NEGATIVE_INFINITY, Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(-1, t.run(Double.NEGATIVE_INFINITY, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+    * @constraint A24 
+    * @title number of registers
+    */
+    public void testVFE2() {
+       try {
+           Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_5");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d
new file mode 100644
index 0000000..03a840e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_1.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.java
new file mode 100644
index 0000000..cb1587f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_double.d;
+
+public class T_cmpl_double_1 {
+
+    public int run(double a, double b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d
new file mode 100644
index 0000000..49566ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_2.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const v14, 3.14
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d
new file mode 100644
index 0000000..e132fa0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_3.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.limit regs 16
+
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.java
new file mode 100644
index 0000000..5f32c2c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_double.d;
+
+public class T_cmpl_double_3 {
+
+    public int run(long a, double b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d
new file mode 100644
index 0000000..cf01f55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_4.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const-wide v12, 12356
+       cmpl-double v0, v12, v11
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d
new file mode 100644
index 0000000..453ee43
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_5.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpl-double v0, v12, v16
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d
new file mode 100644
index 0000000..720ec7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_6.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 16
+       move v0, v14
+       move v1, v14
+       move v2, v15
+       move v3, v15
+
+       cmpl-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/Test_cmpl_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/Test_cmpl_float.java
new file mode 100644
index 0000000..3ca0b5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/Test_cmpl_float.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpl_float.d.T_cmpl_float_6;
+import dot.junit.opcodes.cmpl_float.d.T_cmpl_float_1;
+
+public class Test_cmpl_float extends DxTestCase {
+    /**
+     * @title Arguments = 3.14f, 2.7f
+     */
+    public void testN1() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(1, t.run(3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, 2.7f
+     */
+    public void testN2() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(-1, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(0, t.run(3.14f, 3.14f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this comparison of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpl_float_6 t = new T_cmpl_float_6();
+        try {
+            t.run(123, 3.145f);
+        } catch (Throwable e) {
+        }
+    }     
+    
+    /**
+     * @title Arguments = Float.NaN, Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(-1, t.run(Float.NaN, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.NEGATIVE_INFINITY, Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(-1, t.run(Float.NEGATIVE_INFINITY, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d
new file mode 100644
index 0000000..48f14e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_1.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpl-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.java
new file mode 100644
index 0000000..afd42d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_float.d;
+
+public class T_cmpl_float_1 {
+
+    public int run(float a, float b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d
new file mode 100644
index 0000000..67ed903
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_2.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 3.1414
+       cmpl-float v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d
new file mode 100644
index 0000000..b43f114
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_3.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 234234
+       cmpl-float v0, v1, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d
new file mode 100644
index 0000000..a4aa08e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_4.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpl-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d
new file mode 100644
index 0000000..d496c11
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_5.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpl-float v0, v9, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d
new file mode 100644
index 0000000..05a9e62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_6.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 9
+       cmpl-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.java
new file mode 100644
index 0000000..e41e14a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_float.d;
+
+public class T_cmpl_float_6 {
+
+    public int run(int a, float b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/Test_const_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/Test_const_16.java
new file mode 100644
index 0000000..00e6b78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/Test_const_16.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_16.d.T_const_16_1;
+
+public class Test_const_16 extends DxTestCase {
+    
+    /**
+     * @title const/16 v254, -20000
+     */
+    public void testN2() {
+        T_const_16_1 t = new T_const_16_1();
+         int a = -10000;
+         int b = -10000;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_16.d.T_const_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_16.d.T_const_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.d
new file mode 100644
index 0000000..6078e06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_16_1.java
+.class public dot.junit.opcodes.const_16.d.T_const_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 255
+
+       const/16 v254, -20000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.java
new file mode 100644
index 0000000..3285906
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_16.d;
+
+public class T_const_16_1 {
+
+    public int run() {
+        return -20000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.d
new file mode 100644
index 0000000..4e0bfa7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_16_3.java
+.class public dot.junit.opcodes.const_16.d.T_const_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.d
new file mode 100644
index 0000000..4040879
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_16_4.java
+.class public dot.junit.opcodes.const_16.d.T_const_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const/16 v1, 1234
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/Test_const_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/Test_const_4.java
new file mode 100644
index 0000000..d9bb26b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/Test_const_4.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_4;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_4.d.T_const_4_1;
+
+public class Test_const_4 extends DxTestCase {
+    /**
+     * @title const/4 v15, -4
+     */
+    public void testN2() {
+        T_const_4_1 t = new T_const_4_1();
+         int a = -2;
+         int b = -2;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_4.d.T_const_4_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_4.d.T_const_4_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.d
new file mode 100644
index 0000000..77c522e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_4_1.java
+.class public dot.junit.opcodes.const_4.d.T_const_4_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 16
+
+       const/4 v15, -4
+       return v15
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.java
new file mode 100644
index 0000000..a8b8ab3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_4.d;
+
+public class T_const_4_1 {
+
+    public int run() {
+        return -4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.d
new file mode 100644
index 0000000..d435f16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_4_3.java
+.class public dot.junit.opcodes.const_4.d.T_const_4_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/4 v3, 1
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.d
new file mode 100644
index 0000000..5ca94d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_4_4.java
+.class public dot.junit.opcodes.const_4.d.T_const_4_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const/4 v1, 2
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/TestStubs.java
new file mode 100644
index 0000000..3897d2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class;
+
+//used by testE2
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/Test_const_class.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/Test_const_class.java
new file mode 100644
index 0000000..93f5ee4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/Test_const_class.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_class.d.T_const_class_1;
+import dot.junit.opcodes.const_class.d.T_const_class_2;
+import dot.junit.opcodes.const_class.d.T_const_class_6;
+import dot.junit.opcodes.const_class.d.T_const_class_7;
+
+public class Test_const_class extends DxTestCase {
+    /**
+     * @title const-class v254, java/lang/String
+     */
+    public void testN1() {
+        T_const_class_1 t = new T_const_class_1();
+        Class c = t.run();
+        assertEquals(0, c.getCanonicalName().compareTo("java.lang.String"));
+    }
+    
+    /**
+     * @title const-class v254, I
+     */
+    public void testN2() {
+        T_const_class_2 t = new T_const_class_2();
+        Class c = t.run();
+        assertEquals(c.getCanonicalName(), "int");
+    }
+
+    /**
+     * @title Class definition not found
+     */
+    public void testE1() {
+        try {
+            T_const_class_6 t = new T_const_class_6();
+            t.run();
+            fail("expected a verification exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch(VerifyError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title Class is not accessible
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.const_class.TestStubs
+        //@uses dot.junit.opcodes.const_class.d.T_const_class_7
+        try {
+            T_const_class_7 t = new T_const_class_7();
+            t.run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_class.d.T_const_class_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_class.d.T_const_class_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A18 
+     * @title  constant pool index
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.const_class.d.T_const_class_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.d
new file mode 100644
index 0000000..6359d92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_1.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, java/lang/String
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.java
new file mode 100644
index 0000000..d95f659
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class.d;
+
+public class T_const_class_1 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.d
new file mode 100644
index 0000000..39bb30e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_2.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, I
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.java
new file mode 100644
index 0000000..030d3e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class.d;
+
+public class T_const_class_2 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.d
new file mode 100644
index 0000000..50da342
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_3.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-class v3, java/lang/Object
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.d
new file mode 100644
index 0000000..6f6b7b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_4.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-class v1, java/lang/Object
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.d
new file mode 100644
index 0000000..24186a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_5.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-class v254, java/lang/Object
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.dfh
new file mode 100644
index 0000000..db89eba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.dfh
@@ -0,0 +1,254 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_class/d/T_const_class_5.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_class/d/T_const_class_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ad464cd4
+    D4 4C 46 AD 
+// parsed: offset 12, len 20: signature           : 959c...4307
+    95 9C 6C 40 92 C8 1F 85 87 C2 86 A1 52 39 A6 87 C9 63 43 07 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "L"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 370 (0x000172) "Ljava/lang/String;"
+    72 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 390 (0x000186) "T_const_class_5.java"
+    86 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 412 (0x00019c) "V"
+    9C 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_const_class_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.const_class.d.T_const_class_5.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.const_class.d.T_const_class_5.run"
+    // parsed: offset 264, len 2: registers_size: 255
+        FF 00 
+    // parsed: offset 266, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: const-class v254, Ljava/lang/Object; // class@0001
+//@mod            1C FE 01 00 
+            1C FE 01 01 
+        // parsed: offset 284, len 2: |0002: return-object v254
+            11 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 299, len 51: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 6F 6E 73 74 5F 63 6C 61 73 73 2F 64 2F 54 5F 63 6F 6E 73 74 5F 63 6C 61 73 73 5F 35 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 390, len 22: TYPE_STRING_DATA_ITEM [5] "T_const_class_5.java"
+    14 54 5F 63 6F 6E 73 74 5F 63 6C 61 73 73 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 412, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.d
new file mode 100644
index 0000000..bd893c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_6.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, java/lang/StringNNNNN
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.java
new file mode 100644
index 0000000..4dd4ad3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class.d;
+
+public class T_const_class_6 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.d
new file mode 100644
index 0000000..20d9749
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_7.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, dot/junit/opcodes/const_class/TestStubs
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.java
new file mode 100644
index 0000000..b67d795
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class.d;
+
+public class T_const_class_7 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/Test_const_high16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/Test_const_high16.java
new file mode 100644
index 0000000..68340a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/Test_const_high16.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_high16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_high16.d.T_const_high16_1;
+
+public class Test_const_high16 extends DxTestCase {
+    /**
+     * @title const/high16 v254, 0x12340000
+     */
+    public void testN1() {
+        T_const_high16_1 t = new T_const_high16_1();
+        assertEquals(0x12340000, t.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_high16.d.T_const_high16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_high16.d.T_const_high16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d
new file mode 100644
index 0000000..fcc1c2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_high16_1.java
+.class public dot.junit.opcodes.const_high16.d.T_const_high16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 255
+
+       const/high16 v254, 0x12340000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.java
new file mode 100644
index 0000000..df8cf3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_high16.d;
+
+public class T_const_high16_1 {
+
+    public int run() {
+        return -20000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d
new file mode 100644
index 0000000..e207c68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_high16_3.java
+.class public dot.junit.opcodes.const_high16.d.T_const_high16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/high16 v3, 0x12340000
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d
new file mode 100644
index 0000000..f8caefa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_high16_4.java
+.class public dot.junit.opcodes.const_high16.d.T_const_high16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const/high16 v1, 0x12340000
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/Test_const_string.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/Test_const_string.java
new file mode 100644
index 0000000..b5c778d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/Test_const_string.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_string;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_string.d.T_const_string_1;
+
+public class Test_const_string extends DxTestCase {
+    /**
+     * @title const-string v254, "android"
+     */
+    public void testN1() {
+        T_const_string_1 t = new T_const_string_1();
+        String s = t.run();
+        assertEquals(s.compareTo("android"), 0);
+        
+        String s2 = t.run();
+        assertTrue(s == s2);
+    }
+
+    /**
+     * @constraint A23
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string.d.T_const_string_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string.d.T_const_string_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A9 
+     * @title  constant pool index
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string.d.T_const_string_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.d
new file mode 100644
index 0000000..11b3770
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_1.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string v254, "android"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.java
new file mode 100644
index 0000000..0bb9508
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_string.d;
+
+public class T_const_string_1 {
+
+    public String run() {
+        return "android";
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.d
new file mode 100644
index 0000000..773bd80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_3.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-string v3, "abc"
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.d
new file mode 100644
index 0000000..d8b8519
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_4.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-string v1, "abc"
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.d
new file mode 100644
index 0000000..1ece763
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_5.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string v254, "android"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.dfh
new file mode 100644
index 0000000..96a95b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.dfh
@@ -0,0 +1,258 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string/d/T_const_string_5.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string/d/T_const_string_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 557d54bb
+    BB 54 7D 55 
+// parsed: offset 12, len 20: signature           : ffa5...7ccb
+    FF A5 C3 77 3F 0D DA AE 41 93 96 A8 0C B7 F6 FB 04 BB 7C CB 
+// parsed: offset 32, len 4: file_size           : 576
+    40 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 452 (0x0001c4)
+    C4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 332
+    4C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 356 (0x000164) "Ljava/lang/Object;"
+    64 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 376 (0x000178) "Ljava/lang/String;"
+    78 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "T_const_string_5.java"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 419 (0x0001a3) "V"
+    A3 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 422 (0x0001a6) "android"
+    A6 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 431 (0x0001af) "run"
+    AF 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 164, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 176, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 8 (0x000008) "run"
+    00 00 00 00 08 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_const_string_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 436 (0x0001b4)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 B4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.const_string.d.T_const_string_5.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.const_string.d.T_const_string_5.run"
+    // parsed: offset 268, len 2: registers_size: 255
+        FF 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: const-string v254, "android" // string@0007
+//@mod            1A FE 07 00 
+            1A FE 07 01 
+        // parsed: offset 288, len 2: |0002: return-object v254
+            11 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 53: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 2F 64 2F 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 35 3B 00 
+// parsed: offset 356, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 376, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 396, len 23: TYPE_STRING_DATA_ITEM [5] "T_const_string_5.java"
+    15 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 419, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 422, len 9: TYPE_STRING_DATA_ITEM [7] "android"
+    07 61 6E 64 72 6F 69 64 00 
+// parsed: offset 431, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    // parsed: offset 436, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 437, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 438, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 439, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 440, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 441, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 444, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 446, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 447, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 448, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// parsed: offset 450, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 452, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 456, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 468, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 480, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 148 (0x000094)
+        02 00 00 00 04 00 00 00 94 00 00 00 
+    // parsed: offset 492, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 164 (0x0000a4)
+        03 00 00 00 02 00 00 00 A4 00 00 00 
+    // parsed: offset 504, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 516, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 528, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 540, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 292 (0x000124)
+        02 20 00 00 09 00 00 00 24 01 00 00 
+    // parsed: offset 552, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 20 00 00 01 00 00 00 B4 01 00 00 
+    // parsed: offset 564, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 452 (0x0001c4)
+        00 10 00 00 01 00 00 00 C4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/Test_const_string_jumbo.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/Test_const_string_jumbo.java
new file mode 100644
index 0000000..6234730
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/Test_const_string_jumbo.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_string_jumbo;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_1;
+
+public class Test_const_string_jumbo extends DxTestCase {
+    /**
+     * @title const-string/jumbo v254, "android jumbo"
+     */
+    public void testN1() {
+        T_const_string_jumbo_1 t = new T_const_string_jumbo_1();
+        String s = t.run();
+        assertEquals(0, s.compareTo("android jumbo"));
+        
+        String s2 = t.run();
+        assertTrue(s == s2);
+    }
+
+    /**
+     * @constraint A23
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A9 
+     * @title constant pool index
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d
new file mode 100644
index 0000000..893baf2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_jumbo_1.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string/jumbo v254, "android jumbo"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.java
new file mode 100644
index 0000000..35b9b28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_string_jumbo.d;
+
+public class T_const_string_jumbo_1 {
+
+    public String run() {
+        return "android jumbo";
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d
new file mode 100644
index 0000000..c563141
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_jumbo_3.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-string/jumbo v3, "abc jumbo"
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d
new file mode 100644
index 0000000..c4088d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_jumbo_4.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-string/jumbo v1, "abc jumbo"
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d
new file mode 100644
index 0000000..649d3ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_jumbo_5.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string v254, "android jumbo"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dfh
new file mode 100644
index 0000000..6ffa6a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dfh
@@ -0,0 +1,258 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 38775db4
+    B4 5D 77 38 
+// parsed: offset 12, len 20: signature           : b102...2cf6
+    B1 02 9F DE 62 D1 2A B1 06 67 17 07 84 AB F4 FF 90 21 2C F6 
+// parsed: offset 32, len 4: file_size           : 600
+    58 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 476 (0x0001dc)
+    DC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 368 (0x000170) "Ljava/lang/Object;"
+    70 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 388 (0x000184) "Ljava/lang/String;"
+    84 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 408 (0x000198) "T_const_string_jumbo_5.java"
+    98 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 437 (0x0001b5) "V"
+    B5 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 440 (0x0001b8) "android jumbo"
+    B8 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 455 (0x0001c7) "run"
+    C7 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 164, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 176, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 8 (0x000008) "run"
+    00 00 00 00 08 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_const_string_jumbo_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 460 (0x0001cc)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 CC 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5.run"
+    // parsed: offset 268, len 2: registers_size: 255
+        FF 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: const-string v254, "android jumbo" // string@0007
+//@mod            1A FE 07 00 
+            1A FE 07 01 
+        // parsed: offset 288, len 2: |0002: return-object v254
+            11 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 65: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    3F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 6A 75 6D 62 6F 2F 64 2F 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 6A 75 6D 62 6F 5F 35 3B 00 
+// parsed: offset 368, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 388, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 408, len 29: TYPE_STRING_DATA_ITEM [5] "T_const_string_jumbo_5.java"
+    1B 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 6A 75 6D 62 6F 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 437, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 440, len 15: TYPE_STRING_DATA_ITEM [7] "android jumbo"
+    0D 61 6E 64 72 6F 69 64 20 6A 75 6D 62 6F 00 
+// parsed: offset 455, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    // parsed: offset 460, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 461, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 462, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 463, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 464, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 465, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 468, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 470, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 471, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 472, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// parsed: offset 474, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 476, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 480, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 492, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 504, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 148 (0x000094)
+        02 00 00 00 04 00 00 00 94 00 00 00 
+    // parsed: offset 516, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 164 (0x0000a4)
+        03 00 00 00 02 00 00 00 A4 00 00 00 
+    // parsed: offset 528, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 540, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 552, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 564, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 292 (0x000124)
+        02 20 00 00 09 00 00 00 24 01 00 00 
+    // parsed: offset 576, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 460 (0x0001cc)
+        00 20 00 00 01 00 00 00 CC 01 00 00 
+    // parsed: offset 588, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 476 (0x0001dc)
+        00 10 00 00 01 00 00 00 DC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/Test_const_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/Test_const_wide.java
new file mode 100644
index 0000000..1ce3caa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/Test_const_wide.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide.d.T_const_wide_1;
+import dot.junit.opcodes.const_wide.d.T_const_wide_2;
+
+public class Test_const_wide extends DxTestCase {
+    /**
+     * @title const-wide v1, 1.2345678901232324E51
+     */
+    public void testN1() {
+        T_const_wide_1 t = new T_const_wide_1();
+        double a = 1234567890123232323232232323232323232323232323456788d;
+        double b = 1d;
+        assertEquals(a + b, t.run(), 0d);
+    }
+    
+    /**
+     * @title const-wide v253, 20000000000
+     */
+    public void testN2() {
+        T_const_wide_2 t = new T_const_wide_2();
+         long a = 10000000000l;
+         long b = 10000000000l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A24
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide.d.T_const_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide.d.T_const_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d
new file mode 100644
index 0000000..6809530
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_1.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 3
+
+       const-wide v1, 1.2345678901232324E51
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.java
new file mode 100644
index 0000000..b219a93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide.d;
+
+public class T_const_wide_1 {
+    
+    public double run(){
+        return 1.54d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d
new file mode 100644
index 0000000..b2ddede
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_2.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide v253, 20000000000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.java
new file mode 100644
index 0000000..0c9c438
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide.d;
+
+public class T_const_wide_2 {
+
+    public long run() {
+        return 20000000000l;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d
new file mode 100644
index 0000000..1fab9ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_3.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d
new file mode 100644
index 0000000..9493e94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_4.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/Test_const_wide_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/Test_const_wide_16.java
new file mode 100644
index 0000000..941b00d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/Test_const_wide_16.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide_16.d.T_const_wide_16_1;
+
+public class Test_const_wide_16 extends DxTestCase {
+
+    /**
+     * @title const-wide/16 v253, 20000
+     */
+    public void testN1() {
+        T_const_wide_16_1 t = new T_const_wide_16_1();
+         long a = 10000l;
+         long b = 10000l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A24
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_16.d.T_const_wide_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_16.d.T_const_wide_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d
new file mode 100644
index 0000000..02c4e1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_16_1.java
+.class public dot.junit.opcodes.const_wide_16.d.T_const_wide_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide/16 v253, 20000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.java
new file mode 100644
index 0000000..708bf83
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_16.d;
+
+public class T_const_wide_16_1 {
+    
+    public long run(){
+        return 0l;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d
new file mode 100644
index 0000000..eebf570
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_16_3.java
+.class public dot.junit.opcodes.const_wide_16.d.T_const_wide_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide/16 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d
new file mode 100644
index 0000000..c1d79b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_16_4.java
+.class public dot.junit.opcodes.const_wide_16.d.T_const_wide_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide/16 v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/Test_const_wide_32.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/Test_const_wide_32.java
new file mode 100644
index 0000000..0847b3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/Test_const_wide_32.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_32;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide_32.d.T_const_wide_32_1;
+
+public class Test_const_wide_32 extends DxTestCase {
+    /**
+     * @title const-wide/32 v253, 20000000
+     */
+    public void testN1() {
+        T_const_wide_32_1 t = new T_const_wide_32_1();
+         long a = 10000000l;
+         long b = 10000000l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_32.d.T_const_wide_32_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_32.d.T_const_wide_32_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d
new file mode 100644
index 0000000..1962b17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_32_1.java
+.class public dot.junit.opcodes.const_wide_32.d.T_const_wide_32_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide/32 v253, 20000000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.java
new file mode 100644
index 0000000..38be11f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_32.d;
+
+public class T_const_wide_32_1 {
+    
+    public long run(){
+        return 0l;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d
new file mode 100644
index 0000000..44821ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_32_3.java
+.class public dot.junit.opcodes.const_wide_32.d.T_const_wide_32_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide/32 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d
new file mode 100644
index 0000000..afae8dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_32_4.java
+.class public dot.junit.opcodes.const_wide_32.d.T_const_wide_32_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide/32 v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/Test_const_wide_high16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/Test_const_wide_high16.java
new file mode 100644
index 0000000..2dd3e32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/Test_const_wide_high16.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_high16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_1;
+
+public class Test_const_wide_high16 extends DxTestCase {
+    /**
+     * @title const-wide/high16 v252, 0x1234000000000000
+     */
+    public void testN2() {
+        T_const_wide_high16_1 t = new T_const_wide_high16_1();
+        assertEquals(0x1234000000000000l, t.run());
+    }
+
+    /**
+     * @constraint A24
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d
new file mode 100644
index 0000000..c051462
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_high16_1.java
+.class public dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide/high16 v252, 0x1234000000000000
+       return-wide v252
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.java
new file mode 100644
index 0000000..8a06f17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_high16.d;
+
+public class T_const_wide_high16_1 {
+
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d
new file mode 100644
index 0000000..24a577c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_high16_3.java
+.class public dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide/high16 v3, 0x1234000000000000
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d
new file mode 100644
index 0000000..614e5a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_high16_4.java
+.class public dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide/high16 v1, 0x1234000000000000
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/Test_div_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/Test_div_double.java
new file mode 100644
index 0000000..5ce7889
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/Test_div_double.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_double.d.T_div_double_1;
+import dot.junit.opcodes.div_double.d.T_div_double_3;
+
+public class Test_div_double extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(0.8598726114649682d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_div_double_3 t = new T_div_double_3();
+        try {
+            t.run(3.14d, 12345l);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(0d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(-0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.MAX_VALUE, -1E-9f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double / reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.d
new file mode 100644
index 0000000..359ec34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_1.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.java
new file mode 100644
index 0000000..734f130
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double.d;
+
+public class T_div_double_1 {
+
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.d
new file mode 100644
index 0000000..e09176a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       const v10, 3.1415
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.d
new file mode 100644
index 0000000..02d7929
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_3.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)D
+.limit regs 14
+
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.java
new file mode 100644
index 0000000..0cad5bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double.d;
+
+public class T_div_double_3 {
+
+    public double run(double a, long b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.d
new file mode 100644
index 0000000..411b01a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_4.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double v0, v9, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.d
new file mode 100644
index 0000000..2675538
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_5.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.d
new file mode 100644
index 0000000..9ef0732
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_6.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 14
+       move v0, v12
+       move v1, v12
+       move v2, v13
+       move v3, v13
+       div-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/Test_div_double_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/Test_div_double_2addr.java
new file mode 100644
index 0000000..42332e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/Test_div_double_2addr.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_1;
+import dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_3;
+
+public class Test_div_double_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(0.8598726114649682d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_div_double_2addr_3 t = new T_div_double_2addr_3();
+        try {
+            t.run(3.14d, 12345l);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(0d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(-0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.MAX_VALUE, -1E-9f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double / reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d
new file mode 100644
index 0000000..541526e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_1.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.java
new file mode 100644
index 0000000..e853239
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double_2addr.d;
+
+public class T_div_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d
new file mode 100644
index 0000000..5921ceb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_2.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       const v0, 3.1415
+       div-double/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d
new file mode 100644
index 0000000..840ea8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_3.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)D
+.limit regs 14
+
+       div-double/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.java
new file mode 100644
index 0000000..96d1e60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double_2addr.d;
+
+public class T_div_double_2addr_3 {
+
+    public double run(double a, long b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d
new file mode 100644
index 0000000..5cee125
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_4.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double/2addr v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d
new file mode 100644
index 0000000..2ef12c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_5.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d
new file mode 100644
index 0000000..05fc08e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_6.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 14
+       move v0, v12
+       move v1, v12
+       move v2, v13
+       move v3, v13
+       div-double/2addr v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/Test_div_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/Test_div_float.java
new file mode 100644
index 0000000..8671505
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/Test_div_float.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_float.d.T_div_float_1;
+import dot.junit.opcodes.div_float.d.T_div_float_5;
+
+public class Test_div_float extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(0.8598726f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(-1.162963f, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_div_float_5 t = new T_div_float_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(0f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(-0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long / float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.d
new file mode 100644
index 0000000..5d59692
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_1.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.java
new file mode 100644
index 0000000..b75e42b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float.d;
+
+public class T_div_float_1 {
+
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.d
new file mode 100644
index 0000000..4a82c48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       const-wide v0, 3.14
+       div-float v0, v0, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.d
new file mode 100644
index 0000000..9a8b28b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_3.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       const-wide v0, 1234
+       div-float v0, v7, v0
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.d
new file mode 100644
index 0000000..ed7b149
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_4.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       div-float v0, v5, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.d
new file mode 100644
index 0000000..4602631
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_5.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 8
+       div-float v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.java
new file mode 100644
index 0000000..68d16fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float.d;
+
+public class T_div_float_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.d
new file mode 100644
index 0000000..4777687
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_6.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/Test_div_float_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/Test_div_float_2addr.java
new file mode 100644
index 0000000..3fdeb70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/Test_div_float_2addr.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_1;
+import dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_5;
+
+public class Test_div_float_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(0.8598726f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(-1.162963f, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_div_float_2addr_5 t = new T_div_float_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(0f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(-0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d
new file mode 100644
index 0000000..93362fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_1.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.java
new file mode 100644
index 0000000..bfa9c61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float_2addr.d;
+
+public class T_div_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d
new file mode 100644
index 0000000..90ea869
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_2.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       const-wide v0, 3.14
+       div-float/2addr v0, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d
new file mode 100644
index 0000000..f9bddfd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_3.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       const-wide v0, 1234
+       div-float/2addr v7, v0
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d
new file mode 100644
index 0000000..377cda1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_4.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       div-float/2addr v5, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d
new file mode 100644
index 0000000..2f5a998
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_5.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 8
+       div-float/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.java
new file mode 100644
index 0000000..fe4a948
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float_2addr.d;
+
+public class T_div_float_2addr_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d
new file mode 100644
index 0000000..ed354e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_6.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float/2addr v6, v8
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/Test_div_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/Test_div_int.java
new file mode 100644
index 0000000..14614a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/Test_div_int.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int.d.T_div_int_1;
+import dot.junit.opcodes.div_int.d.T_div_int_5;
+
+public class Test_div_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(2, t.run(8, 4));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(268435455, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(-3, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(-357913941, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(5965, t.run(-17895697, -3000));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_5 t = new T_div_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_int_1 t = new T_div_int_1();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_int_1 t = new T_div_int_1();
+        //fail("why this test causes floating point exception?");
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(0, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(0, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_1 t = new T_div_int_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.d
new file mode 100644
index 0000000..aaaf0a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_1.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.java
new file mode 100644
index 0000000..b43738d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int.d;
+
+public class T_div_int_1 {
+
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.d
new file mode 100644
index 0000000..8fb324c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v1, 3.1415
+       div-int v0, v3, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.d
new file mode 100644
index 0000000..446cc2c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_3.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v1, 31415
+       div-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.d
new file mode 100644
index 0000000..c476934
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_4.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.d
new file mode 100644
index 0000000..ad4c79c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_5.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+
+       div-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.java
new file mode 100644
index 0000000..21ba362
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int.d;
+
+public class T_div_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.d
new file mode 100644
index 0000000..6da816d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_6.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/Test_div_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/Test_div_int_2addr.java
new file mode 100644
index 0000000..276c840
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/Test_div_int_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_1;
+import dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_5;
+
+public class Test_div_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(2, t.run(8, 4));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(268435455, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(-3, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(-357913941, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(5965, t.run(-17895697, -3000));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_2addr_5 t = new T_div_int_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(0, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(0, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d
new file mode 100644
index 0000000..00b88e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_1.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.java
new file mode 100644
index 0000000..67464ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_2addr.d;
+
+public class T_div_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d
new file mode 100644
index 0000000..10e15fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_2.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       div-int/2addr v3, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d
new file mode 100644
index 0000000..483865e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_3.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 323231415
+       div-int/2addr v3, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d
new file mode 100644
index 0000000..fbda213
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_4.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int/2addr v1, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d
new file mode 100644
index 0000000..2ee42a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_5.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+
+       div-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.java
new file mode 100644
index 0000000..f206f22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_2addr.d;
+
+public class T_div_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d
new file mode 100644
index 0000000..7742df6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_6.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/Test_div_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/Test_div_int_lit16.java
new file mode 100644
index 0000000..02cc14a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/Test_div_int_lit16.java
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_1;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_10;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_11;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_12;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_13;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_17;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_2;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_3;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_4;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_5;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_6;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_7;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_8;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_9;
+
+
+public class Test_div_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 8 / 4
+     */
+    public void testN1() {
+        T_div_int_lit16_1 t = new T_div_int_lit16_1();
+        assertEquals(2, t.run());
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_lit16_2 t = new T_div_int_lit16_2();
+        assertEquals(268435455, t.run());
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_lit16_3 t = new T_div_int_lit16_3();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_lit16_4 t = new T_div_int_lit16_4();
+        assertEquals(-3, t.run());
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_lit16_5 t = new T_div_int_lit16_5();
+        assertEquals(-357913941, t.run());
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_lit16_6 t = new T_div_int_lit16_6();
+        assertEquals(5965, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_lit16_17 t = new T_div_int_lit16_17();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / -1
+     */
+    public void testB1() {
+        T_div_int_lit16_7 t = new T_div_int_lit16_7();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / 1
+     */
+    public void testB2() {
+        T_div_int_lit16_8 t = new T_div_int_lit16_8();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE / 1
+     */
+    public void testB3() {
+        T_div_int_lit16_9 t = new T_div_int_lit16_9();
+        assertEquals(Integer.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / Short.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_lit16_10 t = new T_div_int_lit16_10();
+        assertEquals(-65538, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Short.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_lit16_11 t = new T_div_int_lit16_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Short.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_lit16_12 t = new T_div_int_lit16_12();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_lit16_13 t = new T_div_int_lit16_13();
+        try {
+            t.run();
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d
new file mode 100644
index 0000000..6b57fb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_1.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 8
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.java
new file mode 100644
index 0000000..3a1df06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_1 {
+
+    public int run() {
+        return 8 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d
new file mode 100644
index 0000000..d665855
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_10.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.java
new file mode 100644
index 0000000..46925a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE / Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d
new file mode 100644
index 0000000..9f6cd95
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_11.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.java
new file mode 100644
index 0000000..b0b3e69
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_11 {
+
+    public int run() {
+        return 1 / Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d
new file mode 100644
index 0000000..e99957a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_12.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.java
new file mode 100644
index 0000000..be1428e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_12 {
+
+    public int run() {
+        return 1 / Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d
new file mode 100644
index 0000000..4115385
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_13.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java
new file mode 100644
index 0000000..bbbab37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_13 {
+
+    public int run() {
+        return 1 / 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d
new file mode 100644
index 0000000..3731d36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_14.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 31415
+       div-int/lit16 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d
new file mode 100644
index 0000000..27fba6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_15.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 3.1415
+       div-int/lit16 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d
new file mode 100644
index 0000000..6caadaf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_16.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       div-int/lit16 v1, v3, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d
new file mode 100644
index 0000000..b60a81d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_17.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       div-int/lit16 v0, v3, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.java
new file mode 100644
index 0000000..71cee9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_17 {
+
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d
new file mode 100644
index 0000000..6215666
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_18.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       div-int/lit16 v0, v4, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d
new file mode 100644
index 0000000..dd4e3f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_2.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741823
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.java
new file mode 100644
index 0000000..10a63dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_2 {
+
+    public int run() {
+        return 1073741823 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d
new file mode 100644
index 0000000..b3b4713
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_3.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 0
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.java
new file mode 100644
index 0000000..ad3d6d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_3 {
+
+    public int run() {
+        return 0 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d
new file mode 100644
index 0000000..e131fc4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_4.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -10
+       div-int/lit16 v0, v2, 3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.java
new file mode 100644
index 0000000..cbf7f0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_4 {
+
+    public int run() {
+        return -10 / 3;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d
new file mode 100644
index 0000000..b61badf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_5.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741824
+       div-int/lit16 v0, v2, -3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.java
new file mode 100644
index 0000000..3a1d497
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_5 {
+
+    public int run() {
+        return 1073741824 / -3;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d
new file mode 100644
index 0000000..c97edff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_6.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -17895697
+       div-int/lit16 v0, v2, -3000
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.java
new file mode 100644
index 0000000..7875953
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_6 {
+
+    public int run() {
+        return -17895697 / -3000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d
new file mode 100644
index 0000000..66cc917
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_7.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.java
new file mode 100644
index 0000000..3fa111c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_7 {
+
+    public int run() {
+        return Integer.MIN_VALUE / -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d
new file mode 100644
index 0000000..6f2fd00
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_8.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.java
new file mode 100644
index 0000000..3389e8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_8 {
+
+    public int run() {
+        return Integer.MIN_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d
new file mode 100644
index 0000000..68f757e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_9.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 2147483647
+       div-int/lit16 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.java
new file mode 100644
index 0000000..bf34419
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/Test_div_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/Test_div_int_lit8.java
new file mode 100644
index 0000000..e2c4057
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/Test_div_int_lit8.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_17;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_1;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_10;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_11;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_12;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_13;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_2;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_3;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_4;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_5;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_6;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_7;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_8;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_9;
+
+public class Test_div_int_lit8 extends DxTestCase {
+     /**
+     * @title Arguments = 8 / 4
+     */
+    public void testN1() {
+        T_div_int_lit8_1 t = new T_div_int_lit8_1();
+        assertEquals(2, t.run());
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_lit8_2 t = new T_div_int_lit8_2();
+        assertEquals(268435455, t.run());
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_lit8_3 t = new T_div_int_lit8_3();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_lit8_4 t = new T_div_int_lit8_4();
+        assertEquals(-3, t.run());
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_lit8_5 t = new T_div_int_lit8_5();
+        assertEquals(-357913941, t.run());
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_lit8_6 t = new T_div_int_lit8_6();
+        assertEquals(596523, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_lit8_17 t = new T_div_int_lit8_17();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / -1
+     */
+    public void testB1() {
+        T_div_int_lit8_7 t = new T_div_int_lit8_7();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / 1
+     */
+    public void testB2() {
+        T_div_int_lit8_8 t = new T_div_int_lit8_8();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE / 1
+     */
+    public void testB3() {
+        T_div_int_lit8_9 t = new T_div_int_lit8_9();
+        assertEquals(Integer.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / Byte.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_lit8_10 t = new T_div_int_lit8_10();
+        assertEquals(-16909320, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Byte.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_lit8_11 t = new T_div_int_lit8_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Byte.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_lit8_12 t = new T_div_int_lit8_12();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_lit8_13 t = new T_div_int_lit8_13();
+        try {
+            t.run();
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d
new file mode 100644
index 0000000..4c6a389
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_1.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 8
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.java
new file mode 100644
index 0000000..04177b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_1 {
+
+    public int run() {
+        return 8 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d
new file mode 100644
index 0000000..25c0e77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_10.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.java
new file mode 100644
index 0000000..8c71346
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE / Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d
new file mode 100644
index 0000000..9522183
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_11.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.java
new file mode 100644
index 0000000..9e2d788
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_11 {
+
+    public int run() {
+        return 1 / Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d
new file mode 100644
index 0000000..cd72c52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_12.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.java
new file mode 100644
index 0000000..9468233
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_12 {
+
+    public int run() {
+        return 1 / Byte.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d
new file mode 100644
index 0000000..1465ebc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_13.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java
new file mode 100644
index 0000000..2e8cbcb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_13 {
+
+    public int run() {
+        return 1 / 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d
new file mode 100644
index 0000000..492ccbc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_14.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 31415
+       div-int/lit8 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d
new file mode 100644
index 0000000..88d70a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_15.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 3.1415
+       div-int/lit8 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d
new file mode 100644
index 0000000..f93542a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_16.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       div-int/lit8 v1, v3, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d
new file mode 100644
index 0000000..b4169d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_17.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       div-int/lit8 v0, v3, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.java
new file mode 100644
index 0000000..329612d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_17 {
+
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d
new file mode 100644
index 0000000..10859c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_18.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       div-int/lit8 v0, v4, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d
new file mode 100644
index 0000000..96145c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_2.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741823
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.java
new file mode 100644
index 0000000..496ac7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_2 {
+
+    public int run() {
+        return 1073741823 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d
new file mode 100644
index 0000000..a93a8b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_3.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 0
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.java
new file mode 100644
index 0000000..29829ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_3 {
+
+    public int run() {
+        return 0 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d
new file mode 100644
index 0000000..458cfb1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_4.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -10
+       div-int/lit8 v0, v2, 3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.java
new file mode 100644
index 0000000..f92aed1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_4 {
+
+    public int run() {
+        return -10 / 3;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d
new file mode 100644
index 0000000..3901a7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_5.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741824
+       div-int/lit8 v0, v2, -3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.java
new file mode 100644
index 0000000..bb60183
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_5 {
+
+    public int run() {
+        return 1073741824 / -3;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d
new file mode 100644
index 0000000..35f9c63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_6.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -17895697
+       div-int/lit8 v0, v2, -30
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.java
new file mode 100644
index 0000000..d071b33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_6 {
+
+    public int run() {
+        return -17895697 / -30;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d
new file mode 100644
index 0000000..0d4f492
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_7.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.java
new file mode 100644
index 0000000..7f7180a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_7 {
+
+    public int run() {
+        return Integer.MIN_VALUE / -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d
new file mode 100644
index 0000000..ee80b01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_8.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.java
new file mode 100644
index 0000000..5563dd8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_8 {
+
+    public int run() {
+        return Integer.MIN_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d
new file mode 100644
index 0000000..466cf0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_9.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 2147483647
+       div-int/lit8 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.java
new file mode 100644
index 0000000..5c62b29
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/Test_div_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/Test_div_long.java
new file mode 100644
index 0000000..b0e1d31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/Test_div_long.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_long.d.T_div_long_1;
+import dot.junit.opcodes.div_long.d.T_div_long_2;
+
+
+public class Test_div_long extends DxTestCase {
+    /**
+     * @title Arguments = 100000000000l, 40000000000l
+     */
+    public void testN1() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(2l, t.run(100000000000l, 40000000000l));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(8l, t.run(98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(0l, t.run(0l, 98765432123456l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-8, t.run(-98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-8, t.run(98765432123456l, -12345678912345l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(80l, t.run(-98765432123456l, -1234567891234l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_div_long_2 t = new T_div_long_2();
+        try {
+            t.run(1234l, 3.1415d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(0, t.run(1, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(0, t.run(1, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_long_1 t = new T_div_long_1();
+        try {
+            t.run(12345678912345l, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float / long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.d
new file mode 100644
index 0000000..fdf2445
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_1.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.java
new file mode 100644
index 0000000..783d7ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long.d;
+
+
+public class T_div_long_1 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.d
new file mode 100644
index 0000000..e72e2a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       div-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.java
new file mode 100644
index 0000000..e6b3456
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long.d;
+
+
+public class T_div_long_2 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.d
new file mode 100644
index 0000000..6a43649
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_3.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 1234
+       div-long v0, v10, v12
+       return-wide v12
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.d
new file mode 100644
index 0000000..409b45a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_4.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 3.14
+       div-long v0, v10, v12
+       return-wide v12
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.d
new file mode 100644
index 0000000..648b110
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_5.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long v0, v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.d
new file mode 100644
index 0000000..b2a6d0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_6.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/Test_div_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/Test_div_long_2addr.java
new file mode 100644
index 0000000..5ba3dad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/Test_div_long_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_1;
+import dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_2;
+
+public class Test_div_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 100000000000l, 40000000000l
+     */
+    public void testN1() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(2l, t.run(100000000000l, 40000000000l));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(8l, t.run(98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(0l, t.run(0l, 98765432123456l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-8, t.run(-98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-8, t.run(98765432123456l, -12345678912345l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(80l, t.run(-98765432123456l, -1234567891234l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_div_long_2addr_2 t = new T_div_long_2addr_2();
+        try {
+            t.run(1234l, 3.1415d);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(0, t.run(1, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(0, t.run(1, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        try {
+            t.run(12345678912345l, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d
new file mode 100644
index 0000000..0ae9ff3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_1.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.java
new file mode 100644
index 0000000..031cac2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long_2addr.d;
+
+
+public class T_div_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d
new file mode 100644
index 0000000..f01fcf4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_2.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       div-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.java
new file mode 100644
index 0000000..674284e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long_2addr.d;
+
+
+public class T_div_long_2addr_2 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d
new file mode 100644
index 0000000..09e48c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_3.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 1234
+       div-long/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d
new file mode 100644
index 0000000..6d91919
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_4.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 3.14
+       div-long/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d
new file mode 100644
index 0000000..ed7fdfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_5.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long/2addr v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d
new file mode 100644
index 0000000..83e2b30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_6.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/Test_double_to_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/Test_double_to_float.java
new file mode 100644
index 0000000..780ffef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/Test_double_to_float.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.double_to_float.d.T_double_to_float_1;
+import dot.junit.opcodes.double_to_float.d.T_double_to_float_3;
+
+public class Test_double_to_float extends DxTestCase {
+     /**
+     * @title Argument = 2.71
+     */
+    public void testN1() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(2.71f, t.run(2.71d));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(1f, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(-1f, t.run(-1d));
+    }
+    
+    /**
+     * @title Type of argument - long. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of long to float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_double_to_float_3 t = new T_double_to_float_3();
+        try {
+            t.run(12345l);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB2() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(0f, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = -0
+     */
+    public void testB3() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(-0f, t.run(-0d));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertTrue(Float.isNaN(t.run(Double.NaN)));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertTrue(Float.isInfinite(t.run(Double.POSITIVE_INFINITY)));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertTrue(Float.isInfinite(t.run(Double.NEGATIVE_INFINITY)));
+    }
+
+
+    /**
+     * @title Argument = -Double.MIN_VALUE
+     */
+    public void testB7() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(-0f, t.run(-4.9E-324d));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d
new file mode 100644
index 0000000..24b332f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_1.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       double-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.java
new file mode 100644
index 0000000..c2cf023
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_float.d;
+
+public class T_double_to_float_1 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d
new file mode 100644
index 0000000..402cfac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_2.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       const v6, 3.14
+       double-to-float v0, v6
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d
new file mode 100644
index 0000000..1cbf6f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_3.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       double-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.java
new file mode 100644
index 0000000..f4be401
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_float.d;
+
+public class T_double_to_float_3 {
+
+    public float run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d
new file mode 100644
index 0000000..135e7ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_4.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       double-to-float v0, v5
+       
+       const v3, 3.14
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d
new file mode 100644
index 0000000..80adf03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_5.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       double-to-float v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d
new file mode 100644
index 0000000..9c65fb8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_6.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-float v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/Test_double_to_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/Test_double_to_int.java
new file mode 100644
index 0000000..86a3cdc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/Test_double_to_int.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.double_to_int.d.T_double_to_int_1;
+import dot.junit.opcodes.double_to_int.d.T_double_to_int_3;
+
+
+public class Test_double_to_int extends DxTestCase {
+    /**
+     * @title Argument = 2.9999999d
+     */
+    public void testN1() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(2, t.run(2.9999999d));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(1, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(-1, t.run(-1d));
+    }
+
+    /**
+     * @title Type of argument - long. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of long to int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_double_to_int_3 t = new T_double_to_int_3();
+        try {
+            t.run(12345l);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Argument = -0
+     */
+    public void testB1() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(0, t.run(-0d));
+    }
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB2() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(0, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(0, t.run(Double.NaN));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d
new file mode 100644
index 0000000..82f2467
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_1.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       double-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.java
new file mode 100644
index 0000000..208a2bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_int.d;
+
+public class T_double_to_int_1 {
+
+    public int run(double a) {
+        return (int)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d
new file mode 100644
index 0000000..7e3a98b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_2.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       const v6, 3.14
+       double-to-int v0, v6
+       const v1, 123
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d
new file mode 100644
index 0000000..07f855a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_3.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       double-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.java
new file mode 100644
index 0000000..03e205b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_int.d;
+
+public class T_double_to_int_3 {
+
+    public int run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d
new file mode 100644
index 0000000..1f62ffb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_4.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       double-to-int v0, v5
+       
+       const v3, 123
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d
new file mode 100644
index 0000000..e4477d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_5.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       double-to-int v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d
new file mode 100644
index 0000000..ecbe761
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_6.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-int v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/Test_double_to_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/Test_double_to_long.java
new file mode 100644
index 0000000..089558e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/Test_double_to_long.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.double_to_long.d.T_double_to_long_1;
+import dot.junit.opcodes.double_to_long.d.T_double_to_long_3;
+
+public class Test_double_to_long extends DxTestCase {
+    /**
+     * @title Argument = 2.9999999
+     */
+    public void testN1() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(2l, t.run(2.9999999d));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(1l, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(-1l, t.run(-1d));
+    }
+    
+    /**
+     * @title Type of argument - long. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of long to long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_double_to_long_3 t = new T_double_to_long_3();
+        try {
+            t.run(12345l);
+        } catch (Throwable e) {
+        }
+    }    
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB2() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(0, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = -0
+     */
+    public void testB3() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(0l, t.run(-0));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(0l, t.run(Double.NaN));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(Long.MIN_VALUE, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d
new file mode 100644
index 0000000..677d352
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_1.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       double-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.java
new file mode 100644
index 0000000..11469d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_long.d;
+
+public class T_double_to_long_1 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d
new file mode 100644
index 0000000..54740b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_2.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       const v6, 3.14
+       double-to-long v0, v6
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d
new file mode 100644
index 0000000..1f2293d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_3.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       const-wide v6, 32380293
+       double-to-long v0, v6
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.java
new file mode 100644
index 0000000..043a2ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_long.d;
+
+public class T_double_to_long_3 {
+
+    public long run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d
new file mode 100644
index 0000000..df716b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_4.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       double-to-long v0, v5
+       
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d
new file mode 100644
index 0000000..8b11c73
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_5.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       double-to-long v0, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d
new file mode 100644
index 0000000..6aeb8fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_6.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-long v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/Test_fill_array_data.java b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/Test_fill_array_data.java
new file mode 100644
index 0000000..5bac3cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/Test_fill_array_data.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.fill_array_data;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.fill_array_data.d.T_fill_array_data_1;
+import dot.junit.opcodes.fill_array_data.d.T_fill_array_data_2;
+
+public class Test_fill_array_data extends DxTestCase {
+    /**
+     * @title array of ints
+     */
+    public void testN1() {
+        int arr[] = new int[5];
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+        t.run(arr);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+     }
+    
+    /**
+     * @title array of doubles
+     */
+    public void testN2() {
+        double arr[] = new double[5];
+        T_fill_array_data_2 t = new T_fill_array_data_2();
+        t.run(arr);
+        for(int i = 0; i < 5; i++)
+            assertEquals((double)(i + 1), arr[i]);
+     }
+
+    /**
+     * @title If there are less elements in the table than the array provides space for, 
+     * the remaining array elements stay untouched.  
+     */
+    public void testN3() {
+        int arr[] = new int[10];
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+        t.run(arr);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+        for(int i = 5; i < 10; i++)
+            assertEquals(0, arr[i]);
+     }
+    
+    /**
+     * @title expected NullPointerException  
+     */
+    public void testE1() {
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+        try {
+            t.run(null);
+        } catch(NullPointerException npe) {
+            // expected
+        }
+     }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException  
+     */
+    public void testE2() {
+        int arr[] = new int[2];
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+       try {
+            t.run(arr);
+        } catch(ArrayIndexOutOfBoundsException e) {
+            // expected
+           }
+     }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference (not array)
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title array of Objects
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title array type and data size shall be consistent
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title offset to table shall be inside method
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title the size and the list must be consistent. 
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B22
+     * @title packed-switch-data pseudo-instructions must not be reachable by control flow 
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title table has wrong ident code
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d
new file mode 100644
index 0000000..1c97601
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_1.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.java
new file mode 100644
index 0000000..c2a43a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.fill_array_data.d;
+
+public class T_fill_array_data_1 {
+    public void run(int[] arr) {
+        return;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d
new file mode 100644
index 0000000..b462d1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_11.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dfh
new file mode 100644
index 0000000..bed70ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dfh
@@ -0,0 +1,264 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 59eb4a7d
+    7D 4A EB 59 
+// parsed: offset 12, len 20: signature           : 083f...2af8
+    08 3F 75 AF 24 45 09 F6 52 52 56 37 0A 56 D4 2A 88 76 2A F8 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 322 (0x000142) "<init>"
+    42 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 330 (0x00014a) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    4A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 390 (0x000186) "Ljava/lang/Object;"
+    86 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 410 (0x00019a) "T_fill_array_data_11.java"
+    9A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 437 (0x0001b5) "V"
+    B5 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 440 (0x0001b8) "VL"
+    B8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 444 (0x0001bc) "[I"
+    BC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 448 (0x0001c0) "run"
+    C0 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "[I"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "VL"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 316 (0x00013c)
+    05 00 00 00 02 00 00 00 3C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_fill_array_data_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11.run"
+    // parsed: offset 264, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 18
+        12 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: fill-array-data v9, 00000004 //  +0x00000004
+            26 09 04 00 00 00 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 28: |0004: array-data (14 units)
+//@mod            00 03 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+            00 03 04 00 06 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 316, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 320, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 322, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 330, len 60: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    3A 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 2F 64 2F 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 31 3B 00 
+// parsed: offset 390, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 410, len 27: TYPE_STRING_DATA_ITEM [3] "T_fill_array_data_11.java"
+    19 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 437, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 440, len 4: TYPE_STRING_DATA_ITEM [5] "VL"
+    02 56 4C 00 
+// parsed: offset 444, len 4: TYPE_STRING_DATA_ITEM [6] "[I"
+    02 5B 49 00 
+// parsed: offset 448, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 316 (0x00013c)
+        01 10 00 00 01 00 00 00 3C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 322 (0x000142)
+        02 20 00 00 08 00 00 00 42 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d
new file mode 100644
index 0000000..c3ce952
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_12.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    goto Label0
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    return-void
+Label0:    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d
new file mode 100644
index 0000000..0066d29
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_13.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dfh
new file mode 100644
index 0000000..0d2fc68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dfh
@@ -0,0 +1,264 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b2054cd3
+    D3 4C 05 B2 
+// parsed: offset 12, len 20: signature           : 1649...5e25
+    16 49 CA 77 41 DC DC A0 6E 2C E0 E8 CE 58 95 B0 0B 40 5E 25 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 322 (0x000142) "<init>"
+    42 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 330 (0x00014a) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    4A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 390 (0x000186) "Ljava/lang/Object;"
+    86 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 410 (0x00019a) "T_fill_array_data_13.java"
+    9A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 437 (0x0001b5) "V"
+    B5 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 440 (0x0001b8) "VL"
+    B8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 444 (0x0001bc) "[I"
+    BC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 448 (0x0001c0) "run"
+    C0 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "[I"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "VL"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 316 (0x00013c)
+    05 00 00 00 02 00 00 00 3C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_fill_array_data_13.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13.run"
+    // parsed: offset 264, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 18
+        12 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: fill-array-data v9, 00000004 //  +0x00000004
+            26 09 04 00 00 00 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 28: |0004: array-data (14 units)
+//@mod            00 03 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+            00 05 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 316, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 320, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 322, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 330, len 60: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    3A 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 2F 64 2F 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 33 3B 00 
+// parsed: offset 390, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 410, len 27: TYPE_STRING_DATA_ITEM [3] "T_fill_array_data_13.java"
+    19 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 33 2E 6A 61 76 61 00 
+// parsed: offset 437, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 440, len 4: TYPE_STRING_DATA_ITEM [5] "VL"
+    02 56 4C 00 
+// parsed: offset 444, len 4: TYPE_STRING_DATA_ITEM [6] "[I"
+    02 5B 49 00 
+// parsed: offset 448, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 316 (0x00013c)
+        01 10 00 00 01 00 00 00 3C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 322 (0x000142)
+        02 20 00 00 08 00 00 00 42 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d
new file mode 100644
index 0000000..6167ef7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_2.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([D)V
+.limit regs 10
+
+    fill-array-data v9 D
+        1.0
+        2.0
+        3.0
+        4.0
+        5.0
+    fill-array-data-end
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.java
new file mode 100644
index 0000000..7c56ef0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.fill_array_data.d;
+
+public class T_fill_array_data_2 {
+    public void run(double[] arr) {
+        return;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d
new file mode 100644
index 0000000..e6ecd1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_3.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v10 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d
new file mode 100644
index 0000000..221ef8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_4.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D[I)V
+.limit regs 10
+    
+    fill-array-data v7 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d
new file mode 100644
index 0000000..cc98351
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_5.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J[I)V
+.limit regs 10
+    
+    fill-array-data v7 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d
new file mode 100644
index 0000000..61990a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_6.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v8 I
+        0
+        0
+        0
+        0
+        0
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d
new file mode 100644
index 0000000..8ba5155
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_7.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        0
+        0
+        0
+        0
+        0
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d
new file mode 100644
index 0000000..e90eb86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_8.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([D)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d
new file mode 100644
index 0000000..0a5e008
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_9.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dfh
new file mode 100644
index 0000000..22cb9c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dfh
@@ -0,0 +1,264 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 29604be4
+    E4 4B 60 29 
+// parsed: offset 12, len 20: signature           : 38a2...97b7
+    38 A2 2B 55 35 C5 4B 31 51 6E 60 02 2B 76 F6 FC FF 7A 97 B7 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 322 (0x000142) "<init>"
+    42 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 330 (0x00014a) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    4A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 389 (0x000185) "Ljava/lang/Object;"
+    85 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 409 (0x000199) "T_fill_array_data_9.java"
+    99 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 435 (0x0001b3) "V"
+    B3 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 438 (0x0001b6) "VL"
+    B6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 442 (0x0001ba) "[I"
+    BA 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 446 (0x0001be) "run"
+    BE 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "[I"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "VL"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 316 (0x00013c)
+    05 00 00 00 02 00 00 00 3C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_fill_array_data_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 451 (0x0001c3)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 C3 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9.run"
+    // parsed: offset 264, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 18
+        12 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: fill-array-data v9, 00000004 //  +0x00000004
+//@mod            26 09 04 00 00 00 
+            26 09 04 01 00 00 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 28: |0004: array-data (14 units)
+            00 03 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 316, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 320, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 322, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 330, len 59: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    39 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 2F 64 2F 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 39 3B 00 
+// parsed: offset 389, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 409, len 26: TYPE_STRING_DATA_ITEM [3] "T_fill_array_data_9.java"
+    18 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 435, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 438, len 4: TYPE_STRING_DATA_ITEM [5] "VL"
+    02 56 4C 00 
+// parsed: offset 442, len 4: TYPE_STRING_DATA_ITEM [6] "[I"
+    02 5B 49 00 
+// parsed: offset 446, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    // parsed: offset 451, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 452, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 453, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 454, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 455, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 456, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 459, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 461, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 462, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 463, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 465, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 316 (0x00013c)
+        01 10 00 00 01 00 00 00 3C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 322 (0x000142)
+        02 20 00 00 08 00 00 00 42 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 451 (0x0001c3)
+        00 20 00 00 01 00 00 00 C3 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/TestStubs.java
new file mode 100644
index 0000000..344f5c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array;
+
+// used by T_filled_new_array_11
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/Test_filled_new_array.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/Test_filled_new_array.java
new file mode 100644
index 0000000..b17c29b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/Test_filled_new_array.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_1;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_10;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_11;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_2;
+
+public class Test_filled_new_array extends DxTestCase {
+    /**
+     * @title array of ints
+     */
+    public void testN1() {
+        T_filled_new_array_1 t = new T_filled_new_array_1();
+        int[] arr = t.run(1, 2, 3, 4, 5);
+        assertNotNull(arr);
+        assertEquals(5, arr.length);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+     }
+
+    /**
+     * @title array of objects
+     */
+    public void testN2() {
+        T_filled_new_array_2 t = new T_filled_new_array_2();
+        String s = "android";
+        Object[] arr = t.run(t, s);
+        assertNotNull(arr);
+        assertEquals(2, arr.length);
+        assertEquals(t, arr[0]);
+        assertEquals(s, arr[1]);
+    }
+
+    /**
+     * @constraint A17
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+         try {
+             Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+ 
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass obj ref instead of int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass long instead of int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to create non-array type
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title invalid arg count
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate String[] and fill it with reference to assignment-incompatible class
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_9");
+            fail("expected a verification exception"); 
+        } catch(Throwable t) { 
+            DxUtil.checkVerifyException(t);    
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate array of non-existent class
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.filled_new_array.d.T_filled_new_array_10
+        try {
+            T_filled_new_array_10 T = new T_filled_new_array_10();
+            T.run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch(NoClassDefFoundError t) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate array of inaccessible class
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.filled_new_array.d.T_filled_new_array_11
+        //@uses dot.junit.opcodes.filled_new_array.TestStubs
+        try {
+            T_filled_new_array_11 T = new T_filled_new_array_11();
+            T.run();
+            fail("expected a IllegalAccessError exception");
+        } catch(IllegalAccessError t) {
+            // expected
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d
new file mode 100644
index 0000000..0c195eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_1.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.java
new file mode 100644
index 0000000..05cd56f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_1 {
+    public int[] run(int a, int b, int c, int d, int e) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d
new file mode 100644
index 0000000..ccfc7d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_10.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array {v9}, [Ljava/lang/StringNNNNN;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.java
new file mode 100644
index 0000000..4caf263
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_10 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d
new file mode 100644
index 0000000..dca1ca3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_11.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array {v9}, [Ldot/junit/opcodes/filled_new_array/TestStubs;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.java
new file mode 100644
index 0000000..f25d58f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_11 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d
new file mode 100644
index 0000000..532158e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_2.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array {v8, v9}, [Ljava/lang/Object;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.java
new file mode 100644
index 0000000..0edab9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_2 {
+    public Object[] run(Object a, Object b) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d
new file mode 100644
index 0000000..69d1f79
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_3.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dfh
new file mode 100644
index 0000000..deace06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dfh
@@ -0,0 +1,280 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5ca65099
+    99 50 A6 5C 
+// parsed: offset 12, len 20: signature           : 05d9...c8d3
+    05 D9 B4 47 7C 61 39 F5 99 31 79 2A DE 6F 88 65 3C 8D C8 D3 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "LIIIII"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 333 (0x00014d) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    4D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 394 (0x00018a) "Ljava/lang/Object;"
+    8A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 414 (0x00019e) "T_filled_new_array_3.java"
+    9E 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 441 (0x0001b9) "V"
+    B9 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 444 (0x0001bc) "[I"
+    BC 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 448 (0x0001c0) "run"
+    C0 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 300 (0x00012c)
+    02 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3.run"
+    // parsed: offset 272, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 274, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: filled-new-array {v5, v6, v7, v8, v9}, [I // class@0004
+//@mod            24 59 04 00 65 87 
+            24 59 04 01 65 87 
+        // parsed: offset 294, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 296, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 298, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 308, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 312, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 333, len 61: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    3B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 33 3B 00 
+// parsed: offset 394, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 414, len 27: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_3.java"
+    19 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 441, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 444, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 448, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d
new file mode 100644
index 0000000..ac6b1b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_4.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v10}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d
new file mode 100644
index 0000000..c2702a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_5.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v4}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d
new file mode 100644
index 0000000..6be462d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_6.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIIJ)V
+.limit regs 11
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d
new file mode 100644
index 0000000..129a800
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_7.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d
new file mode 100644
index 0000000..951e06a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_8.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 10
+
+       invoke-direct {v9}, java/lang/Object/<init>()V
+       
+       const v5, 0
+       const v6, 0
+       const v7, 0
+       const v8, 0
+       const v9, 0
+       filled-new-array {v5, v6, v7, v8, v9}, [I
+       move-result-object v0
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dfh
new file mode 100644
index 0000000..343d149
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dfh
@@ -0,0 +1,297 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5bac58f0
+    F0 58 AC 5B 
+// parsed: offset 12, len 20: signature           : d1b9...67e0
+    D1 B9 FB 64 E5 F3 AB 93 DC 90 83 01 BD F0 6C A0 7E B2 67 E0 
+// parsed: offset 32, len 4: file_size           : 644
+    84 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 508 (0x0001fc)
+    FC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 396
+    8C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 354 (0x000162) "<init>"
+    62 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 362 (0x00016a) "I"
+    6A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 365 (0x00016d) "LIIIII"
+    6D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 434 (0x0001b2) "Ljava/lang/Object;"
+    B2 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 454 (0x0001c6) "T_filled_new_array_8.java"
+    C6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 481 (0x0001e1) "V"
+    E1 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 484 (0x0001e4) "[I"
+    E4 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 488 (0x0001e8) "run"
+    E8 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 04 00 00 00 54 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 493 (0x0001ed)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 ED 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 23
+        17 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v9}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 09 00 
+        // parsed: offset 270, len 6: |0003: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 276, len 6: |0006: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 282, len 6: |0009: const v7, #float 0.000000 // #0x00000000 int
+            14 07 00 00 00 00 
+        // parsed: offset 288, len 6: |000c: const v8, #float 0.000000 // #0x00000000 int
+            14 08 00 00 00 00 
+        // parsed: offset 294, len 6: |000f: const v9, #float 0.000000 // #0x00000000 int
+            14 09 00 00 00 00 
+        // parsed: offset 300, len 6: |0012: filled-new-array {v5, v6, v7, v8, v9}, [I // class@0004
+//@mod            24 59 04 00 65 87 
+            24 F9 04 00 65 87 
+        // parsed: offset 306, len 2: |0015: move-result-object v0
+            0C 00 
+        // parsed: offset 308, len 2: |0016: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 310, len 2: PADDING
+    00 00 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8.run"
+    // parsed: offset 312, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 314, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 316, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 318, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 320, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 324, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 328, len 6: |0000: filled-new-array {v5, v6, v7, v8, v9}, [I // class@0004
+//@mod            24 59 04 00 65 87 
+            24 F9 04 00 65 87 
+        // parsed: offset 334, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 336, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 338, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 346, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 348, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 350, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 352, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 354, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 362, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 365, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 373, len 61: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    3B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 38 3B 00 
+// parsed: offset 434, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 454, len 27: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_8.java"
+    19 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 481, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 484, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 488, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    // parsed: offset 493, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 494, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 495, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 496, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 497, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 498, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 501, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 503, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 504, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 505, len 2: code_off: 312 (0x000138)
+                B8 02 
+// parsed: offset 507, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 508, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 512, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 524, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 536, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 548, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 560, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 572, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 584, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 596, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 608, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 354 (0x000162)
+        02 20 00 00 09 00 00 00 62 01 00 00 
+    // parsed: offset 620, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 493 (0x0001ed)
+        00 20 00 00 01 00 00 00 ED 01 00 00 
+    // parsed: offset 632, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 508 (0x0001fc)
+        00 10 00 00 01 00 00 00 FC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d
new file mode 100644
index 0000000..c7ba0ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_9.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array {v9}, [Ljava/lang/String;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.java
new file mode 100644
index 0000000..46cac1a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_9 {
+    public Object[] run(Object a) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/TestStubs.java
new file mode 100644
index 0000000..47b87e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range;
+
+// used by T_filled_new_array_range_11
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/Test_filled_new_array_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/Test_filled_new_array_range.java
new file mode 100644
index 0000000..84b1379
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/Test_filled_new_array_range.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_1;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_10;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_11;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_2;
+
+public class Test_filled_new_array_range extends DxTestCase {
+    /**
+     * @title array of ints
+     */
+    public void testN1() {
+        T_filled_new_array_range_1 t = new T_filled_new_array_range_1();
+        int[] arr = t.run(1, 2, 3, 4, 5);
+        assertNotNull(arr);
+        assertEquals(5, arr.length);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+     }
+
+    /**
+     * @title array of objects
+     */
+    public void testN2() {
+        T_filled_new_array_range_2 t = new T_filled_new_array_range_2();
+        String s = "android";
+        Object[] arr = t.run(t, s);
+        assertNotNull(arr);
+        assertEquals(2, arr.length);
+        assertEquals(t, arr[0]);
+        assertEquals(s, arr[1]);
+    }
+
+    /**
+     * @constraint A18
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass obj ref instead of int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass long instead of int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to create non-array type
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title invalid arg count
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate String[] and fill it with reference to assignment-incompatible class
+     */
+    public void testVFE7() {
+        try {
+        	Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_9");
+        	fail("expected a verification exception"); 
+        } catch(Throwable t) { 
+        	DxUtil.checkVerifyException(t);	
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title attempt to instantiate array of non-existent class
+     */
+    public void testVFE8() {
+        T_filled_new_array_range_10 t = new T_filled_new_array_range_10();
+        try {
+            t.run();
+            fail("expected NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title attempt to instantiate array of inaccessible class
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_11
+        //@uses dot.junit.opcodes.filled_new_array_range.TestStubs
+        T_filled_new_array_range_11 t = new T_filled_new_array_range_11();
+        try {
+            t.run();
+            fail("expected IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d
new file mode 100644
index 0000000..503c12a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_1.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.java
new file mode 100644
index 0000000..6e69a23
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_1 {
+    public int[] run(int a, int b, int c, int d, int e) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d
new file mode 100644
index 0000000..50a34b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_10.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array/range {v9}, [Ljava/lang/StringNNNNN;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.java
new file mode 100644
index 0000000..57075bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_10 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d
new file mode 100644
index 0000000..e3a21e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_11.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array/range {v9}, [Ldot/junit/opcodes/filled_new_array_range/TestStubs;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.java
new file mode 100644
index 0000000..f4ca611
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_11 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d
new file mode 100644
index 0000000..2b2ef15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_2.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array/range {v8..v9}, [Ljava/lang/Object;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.java
new file mode 100644
index 0000000..51d1d32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_2 {
+    public Object[] run(Object a, Object b) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d
new file mode 100644
index 0000000..f8c25f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_3.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dfh
new file mode 100644
index 0000000..1a620e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dfh
@@ -0,0 +1,280 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a199569d
+    9D 56 99 A1 
+// parsed: offset 12, len 20: signature           : 62a6...ef00
+    62 A6 E9 6F 30 02 D1 5F BB C2 AB 25 06 22 11 D4 FF 0B EF 00 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "LIIIII"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 333 (0x00014d) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    4D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 406 (0x000196) "Ljava/lang/Object;"
+    96 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 426 (0x0001aa) "T_filled_new_array_range_3.java"
+    AA 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 459 (0x0001cb) "V"
+    CB 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 462 (0x0001ce) "[I"
+    CE 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 466 (0x0001d2) "run"
+    D2 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 300 (0x00012c)
+    02 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_range_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 471 (0x0001d7)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D7 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3.run"
+    // parsed: offset 272, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 274, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: filled-new-array/range {v5..v9}, [I // class@0004
+//@mod            25 05 04 00 05 00 
+            25 05 04 01 05 00 
+        // parsed: offset 294, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 296, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 298, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 308, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 312, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 333, len 73: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    47 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 33 3B 00 
+// parsed: offset 406, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 426, len 33: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_range_3.java"
+    1F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 459, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 462, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 466, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    // parsed: offset 471, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 473, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 474, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 475, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 476, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 479, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 481, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 482, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 483, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 485, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 471 (0x0001d7)
+        00 20 00 00 01 00 00 00 D7 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d
new file mode 100644
index 0000000..ab3d24e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_4.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v10}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d
new file mode 100644
index 0000000..6781fa1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_5.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v4..v8}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d
new file mode 100644
index 0000000..33233b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_6.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIIJ)V
+.limit regs 11
+    filled-new-array/range {v5..v9}, [I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d
new file mode 100644
index 0000000..f60043a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_7.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d
new file mode 100644
index 0000000..7a93faf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_8.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dfh
new file mode 100644
index 0000000..c2696b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dfh
@@ -0,0 +1,280 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 8d4c570b
+    0B 57 4C 8D 
+// parsed: offset 12, len 20: signature           : 0ab5...07fe
+    0A B5 95 25 DA 23 40 C1 99 88 9F D1 05 88 E3 24 5C 7C 07 FE 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "LIIIII"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 333 (0x00014d) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    4D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 406 (0x000196) "Ljava/lang/Object;"
+    96 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 426 (0x0001aa) "T_filled_new_array_range_8.java"
+    AA 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 459 (0x0001cb) "V"
+    CB 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 462 (0x0001ce) "[I"
+    CE 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 466 (0x0001d2) "run"
+    D2 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 300 (0x00012c)
+    02 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_range_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 471 (0x0001d7)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D7 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8.run"
+    // parsed: offset 272, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 274, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: filled-new-array/range {v5..v9}, [I // class@0004
+//@mod            25 05 04 00 05 00 
+            25 FF 04 00 05 00 
+        // parsed: offset 294, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 296, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 298, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 308, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 312, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 333, len 73: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    47 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 38 3B 00 
+// parsed: offset 406, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 426, len 33: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_range_8.java"
+    1F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 459, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 462, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 466, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    // parsed: offset 471, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 473, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 474, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 475, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 476, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 479, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 481, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 482, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 483, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 485, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 471 (0x0001d7)
+        00 20 00 00 01 00 00 00 D7 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d
new file mode 100644
index 0000000..4218cbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_9.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array/range {v9}, [Ljava/lang/String;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.java
new file mode 100644
index 0000000..42ceba8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_9 {
+    public void run() {
+        return;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/Test_float_to_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/Test_float_to_double.java
new file mode 100644
index 0000000..93b6df7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/Test_float_to_double.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.float_to_double.d.T_float_to_double_1;
+import dot.junit.opcodes.float_to_double.d.T_float_to_double_7;
+
+public class Test_float_to_double extends DxTestCase {
+     /**
+     * @title Argument = 0.5
+     */
+    public void testN1() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(0.5d, t.run(0.5f), 0d);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(1d, t.run(1), 0d);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(-1d, t.run(-1), 0d);
+    }
+    
+    /**
+     * @title Type of argument - int. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of int to double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_float_to_double_7 t = new T_float_to_double_7();
+        try {
+            t.run(1);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        double r = 0x1.fffffeP+127d;
+        assertEquals(r, t.run(Float.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = Float.MIN_VALUE
+     */
+    public void testB2() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        double r = 0x0.000002P-126d;
+        assertEquals(r, t.run(Float.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = -0
+     */
+    public void testB3() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(-0d, t.run(-0), 0d);
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertTrue(Double.isNaN(t.run(Float.NaN)));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertTrue(Double.isInfinite(t.run(Float.POSITIVE_INFINITY)));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertTrue(Double.isInfinite(t.run(Float.NEGATIVE_INFINITY)));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d
new file mode 100644
index 0000000..0854de3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_1.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       float-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.java
new file mode 100644
index 0000000..c14f8aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_double.d;
+
+public class T_float_to_double_1 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d
new file mode 100644
index 0000000..c37c547
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_2.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       const-wide v2, 3.14    
+       float-to-double v0, v2
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d
new file mode 100644
index 0000000..59217ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_3.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       const-wide v2, 1223
+       float-to-double v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d
new file mode 100644
index 0000000..32f2b0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_4.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 1
+
+       const v0, 3.14
+       float-to-double v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d
new file mode 100644
index 0000000..77c3dc3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_5.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       float-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d
new file mode 100644
index 0000000..eac86d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_6.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       float-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d
new file mode 100644
index 0000000..71f3c83
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_7.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       float-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.java
new file mode 100644
index 0000000..9018914
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_double.d;
+
+public class T_float_to_double_7 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/Test_float_to_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/Test_float_to_int.java
new file mode 100644
index 0000000..27caeaa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/Test_float_to_int.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.float_to_int.d.T_float_to_int_1;
+import dot.junit.opcodes.float_to_int.d.T_float_to_int_5;
+
+public class Test_float_to_int extends DxTestCase {
+
+    /**
+     * @title Argument = 2.999999f
+     */
+    public void testN1() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(2, t.run(2.999999f));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(1, t.run(1f));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(-1, t.run(-1f));
+    }
+
+    /**
+     * @title Type of argument - int. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of int to int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_float_to_int_5 t = new T_float_to_int_5();
+        try {
+            t.run(1);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Argument = -0f
+     */
+    public void testB1() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(0, t.run(-0f));
+    }
+
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB2() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(0, t.run(Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(0, t.run(Float.NaN));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d
new file mode 100644
index 0000000..35f2eef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_1.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       float-to-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.java
new file mode 100644
index 0000000..b07cb68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_int.d;
+
+public class T_float_to_int_1 {
+
+    public int run(float a) {
+        return (int)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d
new file mode 100644
index 0000000..61a8c4f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_2.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       const-wide v1, 3.14
+       float-to-int v0, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d
new file mode 100644
index 0000000..0401ffd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_3.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       const-wide v1, 1234
+       float-to-int v0, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d
new file mode 100644
index 0000000..94fb137
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_4.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       float-to-int v0, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d
new file mode 100644
index 0000000..697a193
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_5.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       float-to-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.java
new file mode 100644
index 0000000..794d0d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_int.d;
+
+public class T_float_to_int_5 {
+
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d
new file mode 100644
index 0000000..6fa95c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_6.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       float-to-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/Test_float_to_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/Test_float_to_long.java
new file mode 100644
index 0000000..97e2325
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/Test_float_to_long.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.float_to_long.d.T_float_to_long_1;
+import dot.junit.opcodes.float_to_long.d.T_float_to_long_7;
+
+public class Test_float_to_long extends DxTestCase {
+    /**
+     * @title Argument = 2.999999f
+     */
+    public void testN1() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(2l, t.run(2.999999f));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+         T_float_to_long_1 t = new T_float_to_long_1();
+         assertEquals(1l, t.run(1));
+    }
+    
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+         T_float_to_long_1 t = new T_float_to_long_1();
+         assertEquals(-1l, t.run(-1));
+    }
+
+    /**
+     * @title Type of argument - int. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of int to long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_float_to_long_7 t = new T_float_to_long_7();
+        try {
+            t.run(1);
+        } catch (Throwable e) {
+        }
+    } 
+    
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Float.MIN_VALUE
+     */
+    public void testB2() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(0, t.run(Float.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(0l, t.run(0));
+    }
+    
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(0l, t.run(Float.NaN));
+    }
+    
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Float.POSITIVE_INFINITY));
+    }
+    
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(Long.MIN_VALUE, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.float_to_long.jm.T_float_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d
new file mode 100644
index 0000000..a4a5c24
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_1.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       float-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.java
new file mode 100644
index 0000000..667a37b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_long.d;
+
+public class T_float_to_long_1 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d
new file mode 100644
index 0000000..ea3525a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_2.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       const-wide v2, 3.14    
+       float-to-long v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d
new file mode 100644
index 0000000..1fde1d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_3.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       const-wide v2, 1223
+       float-to-long v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d
new file mode 100644
index 0000000..69d1e57
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_4.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 1
+
+       const v0, 3.14
+       float-to-long v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d
new file mode 100644
index 0000000..148381a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_5.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       float-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d
new file mode 100644
index 0000000..99fa733
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_6.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       float-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d
new file mode 100644
index 0000000..30c969c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_7.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       float-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.java
new file mode 100644
index 0000000..58ae745
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_long.d;
+
+public class T_float_to_long_7 {
+
+    public long run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/Test_goto_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/Test_goto_16.java
new file mode 100644
index 0000000..2891fc4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/Test_goto_16.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.goto_16.d.T_goto_16_1;
+
+public class Test_goto_16 extends DxTestCase {
+       /**
+        * @title check forward and backward goto. This test also tests constraint C17 allowing to have
+        * backward goto as a last opcode in the method.
+        */
+       public void testN1() {
+           T_goto_16_1 t = new T_goto_16_1();
+           assertEquals(0, t.run(20));
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target is inside instruction
+        */
+       public void testVFE1() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_16.d.T_goto_16_3");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target shall be inside the method
+        */
+       public void testVFE2() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_16.d.T_goto_16_2");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        * @constraint n/a 
+        * @title zero offset
+        */
+       public void testVFE3() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_16.d.T_goto_16_4");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d
new file mode 100644
index 0000000..caa4ad0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_16_1.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+; test positive offset
+      goto/16 Label2
+LabelReturn:      
+      return v4
+      
+Label2:
+       add-int/lit8 v4, v4, -1
+       if-lez v4, LabelExit
+; test negative offset       
+       goto/16 Label2
+       
+LabelExit:       
+       goto LabelReturn
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.java
new file mode 100644
index 0000000..381d04f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_16.d;
+
+public class T_goto_16_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d
new file mode 100644
index 0000000..7162694
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_16_2.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/16 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.dfh
new file mode 100644
index 0000000..9e83d7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_2.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e5ec3c50
+    50 3C EC E5 
+// parsed: offset 12, len 20: signature           : 700a...7219
+    70 0A 71 39 79 DA 76 3F 7D B4 5A 82 07 EA 55 1E C7 F1 72 19 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_16_2.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_16_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_2.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_2.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: goto/16 0004 // +0x0004
+//@mod            29 00 02 00
+            29 00 02 01
+        // parsed: offset 284, len 2: |0002: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 31 36 2F 64 2F 54 5F 67 6F 74 6F 5F 31 36 5F 32 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_16_2.java"
+    10 54 5F 67 6F 74 6F 5F 31 36 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.java
new file mode 100644
index 0000000..d9729a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_16.d;
+
+public class T_goto_16_2 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d
new file mode 100644
index 0000000..fcaa68d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_16_3.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/16 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.dfh
new file mode 100644
index 0000000..10045e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 77e43d0f
+    0F 3D E4 77 
+// parsed: offset 12, len 20: signature           : 8373...27f3
+    83 73 D6 CF 41 96 B2 D5 47 35 AB 73 18 04 6D FD 57 13 27 F3 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_16_3.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_16_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_3.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_3.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: goto/16 0004 // +0x0004
+//@mod            29 00 02 00 
+            29 00 03 00 
+        // parsed: offset 284, len 2: |0002: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 31 36 2F 64 2F 54 5F 67 6F 74 6F 5F 31 36 5F 33 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_16_3.java"
+    10 54 5F 67 6F 74 6F 5F 31 36 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d
new file mode 100644
index 0000000..746c325
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_16_4.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/16 Label1
+Label1:      
+      return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.dfh
new file mode 100644
index 0000000..1b43042
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5cce3b13
+    13 3B CE 5C 
+// parsed: offset 12, len 20: signature           : f804...031e
+    F8 04 35 7B 64 32 AC 72 3D A1 7F 03 35 09 E1 77 49 DF 03 1E 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_16_4.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_16_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: goto/16 0004 // +0x0004
+//@mod            29 00 02 00 
+            29 00 00 00 
+        // parsed: offset 284, len 2: |0002: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 31 36 2F 64 2F 54 5F 67 6F 74 6F 5F 31 36 5F 34 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_16_4.java"
+    10 54 5F 67 6F 74 6F 5F 31 36 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.java
new file mode 100644
index 0000000..4a087dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_16.d;
+
+public class T_goto_16_4 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/Test_goto_32.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/Test_goto_32.java
new file mode 100644
index 0000000..5f7a4dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/Test_goto_32.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_32;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.goto_32.d.T_goto_32_1;
+
+public class Test_goto_32 extends DxTestCase {
+       /**
+        * @title check forward and backward goto. This test also tests constraint C17 allowing to have
+        * backward goto as a last opcode in the method.
+        */
+       public void testN1() {
+           T_goto_32_1 t = new T_goto_32_1();
+           assertEquals(0, t.run(20));
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target is inside instruction
+        */
+       public void testVFE1() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_32.d.T_goto_32_2");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target shall be inside the method
+        */
+       public void testVFE2() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_32.d.T_goto_32_3");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        *  
+        * @constraint n/a 
+        * @title zero offset - no exception expected
+        */
+       public void testVFE3() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_32.d.T_goto_32_4");
+               // no exception is expected
+           } catch (Throwable t) {
+               fail("not expected" + t);
+           }
+       }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d
new file mode 100644
index 0000000..fd5335a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_32_1.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+; test positive offset
+      goto/32 Label2
+LabelReturn:      
+      return v4
+      
+Label2:
+       add-int/lit8 v4, v4, -1
+       if-lez v4, LabelExit
+; test negative offset       
+       goto/32 Label2
+       
+LabelExit:       
+       goto LabelReturn
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.java
new file mode 100644
index 0000000..90067e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_32.d;
+
+public class T_goto_32_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d
new file mode 100644
index 0000000..1a76901
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_32_2.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/32 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.dfh
new file mode 100644
index 0000000..4b28769
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.dfh
@@ -0,0 +1,260 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_2.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 66653ef5
+    F5 3E 65 66 
+// parsed: offset 12, len 20: signature           : f397...b4a3
+    F3 97 87 FB A7 9D A8 95 06 46 CD 7D 6B 68 DE D4 68 21 B4 A3 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_32_2.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_32_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_2.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_2.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: goto/32 #0x00000003
+//@mod            2A 00 03 00 00 00 
+            2A 00 03 00 00 10 
+        // parsed: offset 286, len 2: |0003: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 33 32 2F 64 2F 54 5F 67 6F 74 6F 5F 33 32 5F 32 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_32_2.java"
+    10 54 5F 67 6F 74 6F 5F 33 32 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.java
new file mode 100644
index 0000000..2f6d726
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_32.d;
+
+public class T_goto_32_2 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d
new file mode 100644
index 0000000..6130ae8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_32_3.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/32 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.dfh
new file mode 100644
index 0000000..4d69427
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.dfh
@@ -0,0 +1,260 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : d7f03cc2
+    C2 3C F0 D7 
+// parsed: offset 12, len 20: signature           : 7597...1d22
+    75 97 05 E2 0A 6D AC B6 E0 92 5B 17 04 77 DE 99 7E F4 1D 22 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_32_3.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_32_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_3.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_3.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: goto/32 #0x00000003
+//@mod            2A 00 03 00 00 00 
+            2A 00 04 00 00 00 
+        // parsed: offset 286, len 2: |0003: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 33 32 2F 64 2F 54 5F 67 6F 74 6F 5F 33 32 5F 33 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_32_3.java"
+    10 54 5F 67 6F 74 6F 5F 33 32 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d
new file mode 100644
index 0000000..624dfaf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_32_4.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+Label1:
+      goto/32 Label1
+      return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/Test_if_eq.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/Test_if_eq.java
new file mode 100644
index 0000000..ed9b9e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/Test_if_eq.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_eq;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_eq.d.T_if_eq_1;
+import dot.junit.opcodes.if_eq.d.T_if_eq_2;
+import dot.junit.opcodes.if_eq.d.T_if_eq_4;
+
+public class Test_if_eq extends DxTestCase {
+    
+    /**
+     * @title Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_eq_1 t = new T_if_eq_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_eq instruction
+         */
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title Arguments = 0x01001234, 0x1234
+     */
+    public void testN4() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1234, t.run(0x01001234, 0x1234));
+    }
+    
+    /**
+     * @title compare references
+     */
+    public void testN5() {
+        T_if_eq_2 t = new T_if_eq_2();
+        String a = "a";
+        String b = "b";
+        assertEquals(1234, t.run(a, b));
+    }
+
+    /**
+     * @title compare references
+     */
+    public void testN6() {
+        T_if_eq_2 t = new T_if_eq_2();
+        String a = "a";
+        assertEquals(1, t.run(a, a));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_if_eq_4 t = new T_if_eq_4();
+        assertEquals(1234, t.run(1f, 1));
+    }  
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 1234567
+     */
+    public void testB3() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1234, t.run(0, 1234567));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB4() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(0, 0));
+    }
+    
+    /**
+     * @title Compare reference with null
+     */
+    public void testB5() {
+        T_if_eq_2 t = new T_if_eq_2();
+        String a = "a";
+        assertEquals(1234, t.run(null, a));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title  zero offset
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d
new file mode 100644
index 0000000..b9e4603
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d
@@ -0,0 +1,24 @@
+.source T_if_eq_1.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.java
new file mode 100644
index 0000000..d9015d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_1 {
+
+    public int run(int a, int b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d
new file mode 100644
index 0000000..a7f0474
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d
@@ -0,0 +1,23 @@
+.source T_if_eq_10.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-eq v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.dfh
new file mode 100644
index 0000000..d0c3c14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ddba4029
+    29 40 BA DD 
+// parsed: offset 12, len 20: signature           : 888d...fb6f
+    88 8D 32 BC 19 C6 2A 6E 73 92 D4 07 A2 C9 A0 63 98 56 FB 6F 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_eq_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eq_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eq v6, v7, 0004 // +0x0004
+//@mod      32 76 04 00 
+            32 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 2F 64 2F 54 5F 69 66 5F 65 71 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_eq_10.java"
+    0F 54 5F 69 66 5F 65 71 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.java
new file mode 100644
index 0000000..6350454
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_10 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d
new file mode 100644
index 0000000..f266a25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d
@@ -0,0 +1,26 @@
+.source T_if_eq_11.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)V
+.limit regs 8
+
+       if-eq v6, v7, Label10
+       const/4 v6, 0
+       return-void
+
+Label10:
+       const v6, 1
+       nop
+       nop
+       const/4 v6, 1
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.dfh
new file mode 100644
index 0000000..b0293d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f79d4878
+    78 48 9D F7 
+// parsed: offset 12, len 20: signature           : f49a...1f2e
+    F4 9A EE 46 B0 E3 E8 12 25 CB 9A BC D5 F7 87 9C F1 75 1F 2E 
+// parsed: offset 32, len 4: file_size           : 580
+    44 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 444 (0x0001bc)
+    BC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 340
+    54 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 312 (0x000138) "<init>"
+    38 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    40 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 380 (0x00017c) "Ljava/lang/String;"
+    7C 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 400 (0x000190) "T_if_eq_11.java"
+    90 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 417 (0x0001a1) "V"
+    A1 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 420 (0x0001a4) "VLL"
+    A4 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 425 (0x0001a9) "run"
+    A9 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/String;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "VLL"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 304 (0x000130)
+    06 00 00 00 03 00 00 00 30 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eq_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 430 (0x0001ae)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 AE 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_11.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-eq v6, v7, 0004 // +0x0004
+//@mod            32 76 04 00 
+            32 76 05 00 
+        // parsed: offset 284, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 6: |0004: const v6, #float 0.000000 // #0x00000001 int
+            14 06 01 00 00 00 
+        // parsed: offset 294, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 296, len 2: |0008: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0009: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 300, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 302, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 2
+        02 00 
+    // parsed: offset 310, len 2: type_item [1] type_idx: 2
+        02 00 
+// parsed: offset 312, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 2F 64 2F 54 5F 69 66 5F 65 71 5F 31 31 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 400, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_eq_11.java"
+    0F 54 5F 69 66 5F 65 71 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 417, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 420, len 5: TYPE_STRING_DATA_ITEM [6] "VLL"
+    03 56 4C 4C 00 
+// parsed: offset 425, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    // parsed: offset 430, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 431, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 432, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 433, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 434, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 435, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 438, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 440, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 441, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 442, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 444, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 448, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 460, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 472, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 484, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 496, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 508, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 520, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 532, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 544, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 312 (0x000138)
+        02 20 00 00 08 00 00 00 38 01 00 00 
+    // parsed: offset 556, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 430 (0x0001ae)
+        00 20 00 00 01 00 00 00 AE 01 00 00 
+    // parsed: offset 568, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 444 (0x0001bc)
+        00 10 00 00 01 00 00 00 BC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.java
new file mode 100644
index 0000000..3c5f8fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_11 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d
new file mode 100644
index 0000000..9f0d34f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d
@@ -0,0 +1,24 @@
+.source T_if_eq_12.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.dfh
new file mode 100644
index 0000000..f327ba6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.dfh
@@ -0,0 +1,272 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 48be3ebd
+    BD 3E BE 48 
+// parsed: offset 12, len 20: signature           : 8ffe...1c12
+    8F FE A9 63 12 82 FD 99 23 44 02 D2 77 6A C4 D2 00 1A 1C 12 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 304 (0x000130) "<init>"
+    30 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 312 (0x000138) "I"
+    38 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 315 (0x00013b) "III"
+    3B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "T_if_eq_12.java"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "run"
+    90 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "III"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 00 00 00 00 28 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_if_eq_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_12.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_12.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-eq v6, v7, 0005 // +0x0005
+//@mod            32 76 05 00 
+            32 76 00 00 
+        // parsed: offset 284, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 288, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 290, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 292, len 2: |0006: goto 0004 // -0x0002
+            28 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 302, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 304, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 312, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 315, len 5: TYPE_STRING_DATA_ITEM [2] "III"
+    03 49 49 49 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 2F 64 2F 54 5F 69 66 5F 65 71 5F 31 32 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 17: TYPE_STRING_DATA_ITEM [5] "T_if_eq_12.java"
+    0F 54 5F 69 66 5F 65 71 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 409, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 410, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 413, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 416, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 417, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 419, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 304 (0x000130)
+        02 20 00 00 08 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d
new file mode 100644
index 0000000..239ef80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d
@@ -0,0 +1,24 @@
+.source T_if_eq_2.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.java
new file mode 100644
index 0000000..2e3f2e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_2 {
+
+    public int run(String a, String b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d
new file mode 100644
index 0000000..8cc6f7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_eq_3.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.java
new file mode 100644
index 0000000..e1d63c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_3 {
+
+    public int run(float a, float b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d
new file mode 100644
index 0000000..614b6b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d
@@ -0,0 +1,24 @@
+.source T_if_eq_4.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.java
new file mode 100644
index 0000000..8a85025
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_4 {
+
+    public int run(float a, int b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d
new file mode 100644
index 0000000..94dd327
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d
@@ -0,0 +1,24 @@
+.source T_if_eq_5.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-eq v6, v8, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d
new file mode 100644
index 0000000..29f910b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_eq_6.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.limit regs 8
+
+       if-eq v6, v8, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.java
new file mode 100644
index 0000000..ab33d58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_6 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d
new file mode 100644
index 0000000..ded22b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d
@@ -0,0 +1,24 @@
+.source T_if_eq_7.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-eq v5, v6, Label11
+       const/16 v5, 1234
+Label10:
+       return v5
+       
+Label11:
+       const/4 v5, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d
new file mode 100644
index 0000000..8e67f2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d
@@ -0,0 +1,24 @@
+.source T_if_eq_8.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-eq v5, v7, Label11
+       const/16 v5, 1234
+Label10:
+       return v5
+       
+Label11:
+       const/4 v5, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d
new file mode 100644
index 0000000..b158878
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d
@@ -0,0 +1,24 @@
+.source T_if_eq_9.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ILjava/lang/String;)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/Test_if_eqz.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/Test_if_eqz.java
new file mode 100644
index 0000000..161ab3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/Test_if_eqz.java
@@ -0,0 +1,169 @@
+package dot.junit.opcodes.if_eqz;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_1;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_2;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_3;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_4;
+
+public class Test_if_eqz extends DxTestCase {
+
+    /**
+     * @title Argument = 5 and -5
+     */
+    public void testN1() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5));
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title Arguments = not null
+     */
+    public void testN2() {
+        T_if_eqz_2 t = new T_if_eqz_2();
+        String str = "abc";
+        assertEquals(1234, t.run(str));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_eqz_3 t = new T_if_eqz_3();
+        assertEquals(1234, t.run(3.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE
+     */
+    public void testB3() {
+        T_if_eqz_3 t = new T_if_eqz_3();
+        assertEquals(1234, t.run(Float.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Float.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_eqz_3 t = new T_if_eqz_3();
+        assertEquals(1234, t.run(Float.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB5() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        assertEquals(1, t.run(0));
+    }
+    
+    /**
+     * @title Compare with null
+     */
+    public void testB6() {
+        T_if_eqz_4 t = new T_if_eqz_4();
+        assertEquals(1, t.run(null));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  branch must not be 0
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d
new file mode 100644
index 0000000..c44b870
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d
@@ -0,0 +1,23 @@
+.source T_ifne_1.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.java
new file mode 100644
index 0000000..69d7ec5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_1 {
+
+    public int run(int a) {
+        return a == 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d
new file mode 100644
index 0000000..8c415d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d
@@ -0,0 +1,24 @@
+.source T_if_eqz_10.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-eqz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dfh
new file mode 100644
index 0000000..8720c5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dfh
@@ -0,0 +1,278 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 13a54087
+    87 40 A5 13 
+// parsed: offset 12, len 20: signature           : f2ad...6186
+    F2 AD 32 32 6C 56 2F 5F 0C 66 01 AD C1 B4 D3 5A E5 69 61 86 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_eqz_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 405 (0x000195) "V"
+    95 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 408 (0x000198) "Z"
+    98 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 411 (0x00019b) "ZI"
+    9B 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eqz_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eqz v5, 0004 // +0x0004
+//@mod            38 05 04 00 
+            38 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 7A 2F 64 2F 54 5F 69 66 5F 65 71 7A 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_eqz_10.java"
+    10 54 5F 69 66 5F 65 71 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 405, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 411, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d
new file mode 100644
index 0000000..af8ce95
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d
@@ -0,0 +1,23 @@
+.source T_if_eqz_11.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-eqz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dfh
new file mode 100644
index 0000000..9776e0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4c653f4a
+    4A 3F 65 4C 
+// parsed: offset 12, len 20: signature           : 64c4...a261
+    64 C4 0B 66 1A 5A 66 6E F4 C8 FA 14 8C 1E 4F 57 1F 9A A2 61 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_eqz_11.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eqz_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_11.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eqz v5, 0004 // +0x0004
+//@mod      38 05 04 00 
+            38 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 7A 2F 64 2F 54 5F 69 66 5F 65 71 7A 5F 31 31 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_eqz_11.java"
+    10 54 5F 69 66 5F 65 71 7A 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d
new file mode 100644
index 0000000..2b44068
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d
@@ -0,0 +1,23 @@
+.source T_ifne_2.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.java
new file mode 100644
index 0000000..288a1e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_2 {
+
+    public int run(String o) {
+        return o == null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d
new file mode 100644
index 0000000..84e6924
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d
@@ -0,0 +1,23 @@
+.source T_ifne_3.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.java
new file mode 100644
index 0000000..f328d0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_3 {
+
+    public int run(float o) {
+        return o == 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d
new file mode 100644
index 0000000..5d0c921
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d
@@ -0,0 +1,23 @@
+.source T_ifne_4.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.java
new file mode 100644
index 0000000..5d83f7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_4 {
+
+    public int run(Object o) {
+        return o == null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d
new file mode 100644
index 0000000..3ddc469
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d
@@ -0,0 +1,23 @@
+.source T_ifne_5.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 6
+
+       if-eqz v6, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d
new file mode 100644
index 0000000..ff120fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d
@@ -0,0 +1,23 @@
+.source T_ifne_6.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       if-eqz v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d
new file mode 100644
index 0000000..2d2ccb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d
@@ -0,0 +1,23 @@
+.source T_ifne_7.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-eqz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d
new file mode 100644
index 0000000..4ff0e6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d
@@ -0,0 +1,23 @@
+.source T_if_eqz_9.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-eqz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dfh
new file mode 100644
index 0000000..ee8a145
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 090e3d64
+    64 3D 0E 09 
+// parsed: offset 12, len 20: signature           : ca45...4c5d
+    CA 45 28 5D 29 16 13 16 67 BC 32 35 F3 8A C7 62 46 28 4C 5D 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_eqz_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eqz_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eqz v5, 0004 // +0x0004
+//@mod      38 05 04 00        
+            38 05 04 01 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 7A 2F 64 2F 54 5F 69 66 5F 65 71 7A 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_eqz_9.java"
+    0F 54 5F 69 66 5F 65 71 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/Test_if_ge.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/Test_if_ge.java
new file mode 100644
index 0000000..5c22637
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/Test_if_ge.java
@@ -0,0 +1,176 @@
+package dot.junit.opcodes.if_ge;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_ge.d.T_if_ge_1;
+import dot.junit.opcodes.if_ge.d.T_if_ge_3;
+
+public class Test_if_ge extends DxTestCase {
+    
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_ge_3 t = new T_if_ge_3();
+        assertEquals(1, t.run(1f, 1));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+     /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title  branch target shall 0
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d
new file mode 100644
index 0000000..1279bbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d
@@ -0,0 +1,23 @@
+.source T_if_ge_1.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.java
new file mode 100644
index 0000000..b507e37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ge.d;
+
+public class T_if_ge_1 {
+
+    public int run(int a, int b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d
new file mode 100644
index 0000000..d02659a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d
@@ -0,0 +1,24 @@
+.source T_if_ge_10.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ge v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.dfh
new file mode 100644
index 0000000..090fea5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 14003ffc
+    FC 3F 00 14 
+// parsed: offset 12, len 20: signature           : b8fa...6526
+    B8 FA D3 7A 8D D7 8E 82 0D 0E D1 33 C7 70 54 00 B1 30 65 26 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_ge_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ge_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ge v6, v7, 0004 // +0x0004
+//@mod            35 76 04 00 
+            35 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 2F 64 2F 54 5F 69 66 5F 67 65 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ge_10.java"
+    0F 54 5F 69 66 5F 67 65 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d
new file mode 100644
index 0000000..667364d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_ge_11.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.dfh
new file mode 100644
index 0000000..730462e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.dfh
@@ -0,0 +1,272 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_11.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07f43ba4
+    A4 3B F4 07 
+// parsed: offset 12, len 20: signature           : 0ddb...f74e
+    0D DB 24 02 D1 3C 3B 83 6B 43 22 39 49 49 55 12 39 79 F7 4E 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 304 (0x000130) "<init>"
+    30 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 312 (0x000138) "I"
+    38 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 315 (0x00013b) "III"
+    3B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "T_if_ge_11.java"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "run"
+    90 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "III"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 00 00 00 00 28 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_if_ge_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_11.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-ge v6, v7, 0005 // +0x0005
+//@mod            35 76 05 00 
+            35 76 00 00 
+        // parsed: offset 284, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 288, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 290, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 292, len 2: |0006: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 302, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 304, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 312, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 315, len 5: TYPE_STRING_DATA_ITEM [2] "III"
+    03 49 49 49 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 2F 64 2F 54 5F 69 66 5F 67 65 5F 31 31 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 17: TYPE_STRING_DATA_ITEM [5] "T_if_ge_11.java"
+    0F 54 5F 69 66 5F 67 65 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 409, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 410, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 413, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 416, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 417, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 419, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 304 (0x000130)
+        02 20 00 00 08 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d
new file mode 100644
index 0000000..af33b07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_ge_2.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.java
new file mode 100644
index 0000000..64014ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_ge.d;
+
+public class T_if_ge_2 {
+
+    public int run(float a, float b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d
new file mode 100644
index 0000000..876dcdc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d
@@ -0,0 +1,23 @@
+.source T_if_ge_3.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.java
new file mode 100644
index 0000000..d524e1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ge.d;
+
+public class T_if_ge_3 {
+
+    public int run(float a, int b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d
new file mode 100644
index 0000000..3593702
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d
@@ -0,0 +1,23 @@
+.source T_if_ge_4.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ge v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d
new file mode 100644
index 0000000..ddf627e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d
@@ -0,0 +1,23 @@
+.source T_if_ge_5.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-ge v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d
new file mode 100644
index 0000000..74e3506
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d
@@ -0,0 +1,23 @@
+.source T_if_ge_6.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-ge v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d
new file mode 100644
index 0000000..b3559bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d
@@ -0,0 +1,23 @@
+.source T_if_ge_7.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d
new file mode 100644
index 0000000..254da33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d
@@ -0,0 +1,23 @@
+.source T_if_ge_9.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ge v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.dfh
new file mode 100644
index 0000000..3f4b044
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c6b54091
+    91 40 B5 C6 
+// parsed: offset 12, len 20: signature           : a65c...e5f5
+    A6 5C 79 D3 A9 EE BA 8C 74 66 B9 7A 38 6E 20 6C 12 E5 E5 F5 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_ge_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ge_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ge v6, v7, 0004 // +0x0004
+//@mod      35 76 04 00 
+            35 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 2F 64 2F 54 5F 69 66 5F 67 65 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_ge_9.java"
+    0E 54 5F 69 66 5F 67 65 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/Test_if_gez.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/Test_if_gez.java
new file mode 100644
index 0000000..da97922
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/Test_if_gez.java
@@ -0,0 +1,151 @@
+package dot.junit.opcodes.if_gez;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_gez.d.T_if_gez_1;
+import dot.junit.opcodes.if_gez.d.T_if_gez_2;
+
+public class Test_if_gez extends DxTestCase {
+    
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_gez_2 t = new T_if_gez_2();
+        assertEquals(1, t.run(1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d
new file mode 100644
index 0000000..85145e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d
@@ -0,0 +1,23 @@
+.source T_if_gez_1.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.java
new file mode 100644
index 0000000..462ed6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gez.d;
+
+public class T_if_gez_1 {
+
+    public int run(int a) {
+        return a >= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d
new file mode 100644
index 0000000..503c0be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d
@@ -0,0 +1,23 @@
+.source T_if_gez_10.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.dfh
new file mode 100644
index 0000000..b4fa6dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_10.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5d7e4122
+    22 41 7E 5D 
+// parsed: offset 12, len 20: signature           : 9bea...7f9b
+    9B EA D8 28 0E 81 13 A4 C2 E3 5E 59 A7 CC B3 E4 1A 47 7F 9B 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_gez_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gez_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gez v5, 0004 // +0x0004
+//@mod      3B 05 04 00 
+            3B 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 7A 2F 64 2F 54 5F 69 66 5F 67 65 7A 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_gez_10.java"
+    10 54 5F 69 66 5F 67 65 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d
new file mode 100644
index 0000000..3d0a858
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d
@@ -0,0 +1,23 @@
+.source T_if_gez_2.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-gez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.java
new file mode 100644
index 0000000..55d7605
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gez.d;
+
+public class T_if_gez_2 {
+
+    public int run(float a) {
+        return a >= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d
new file mode 100644
index 0000000..a4bda68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d
@@ -0,0 +1,23 @@
+.source T_if_gez_3.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gez v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d
new file mode 100644
index 0000000..4a60845
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d
@@ -0,0 +1,23 @@
+.source T_if_gez_4.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-gez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d
new file mode 100644
index 0000000..c3d88e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d
@@ -0,0 +1,23 @@
+.source T_if_gez_5.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-gez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d
new file mode 100644
index 0000000..666d59f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d
@@ -0,0 +1,23 @@
+.source T_if_gez_6.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-gez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d
new file mode 100644
index 0000000..9534ba0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_gez_7.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gez v0, Label9
+       const/16 v0, 1234
+       return v0
+
+Label9:
+       const/4 v0, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d
new file mode 100644
index 0000000..f1df2d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d
@@ -0,0 +1,23 @@
+.source T_if_gez_8.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.dfh
new file mode 100644
index 0000000..307f59d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 743e41c9
+    C9 41 3E 74 
+// parsed: offset 12, len 20: signature           : 8137...c1a7
+    81 37 BE DD 96 E5 E3 AE 8E C3 09 D0 A5 41 3C 1A AC EC C1 A7 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_gez_8.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gez_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gez v5, 0004 // +0x0004
+//@mod      3B 05 04 00 
+            3B 05 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 7A 2F 64 2F 54 5F 69 66 5F 67 65 7A 5F 38 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gez_8.java"
+    0F 54 5F 69 66 5F 67 65 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d
new file mode 100644
index 0000000..a0b7545
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d
@@ -0,0 +1,24 @@
+.source T_if_gez_9.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.dfh
new file mode 100644
index 0000000..4c24707
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f5534081
+    81 40 53 F5 
+// parsed: offset 12, len 20: signature           : 01ee...5008
+    01 EE F6 9D DC E2 4D 51 1B 8B 52 BC 5D A5 3C 9C 1B F0 50 08 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 366 (0x00016e) "Ljava/lang/Object;"
+    6E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 386 (0x000182) "T_if_gez_9.java"
+    82 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "V"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "Z"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 409 (0x000199) "ZI"
+    99 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 413 (0x00019d) "run"
+    9D 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gez_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 418 (0x0001a2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gez v5, 0004 // +0x0004
+//@mod            3B 05 04 00 
+            3B 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 7A 2F 64 2F 54 5F 69 66 5F 67 65 7A 5F 39 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 386, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gez_9.java"
+    0F 54 5F 69 66 5F 67 65 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 406, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 409, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 413, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    // parsed: offset 418, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 419, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 420, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 421, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 423, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 426, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 429, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 430, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 418 (0x0001a2)
+        00 20 00 00 01 00 00 00 A2 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/Test_if_gt.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/Test_if_gt.java
new file mode 100644
index 0000000..862ba4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/Test_if_gt.java
@@ -0,0 +1,175 @@
+package dot.junit.opcodes.if_gt;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_gt.d.T_if_gt_1;
+import dot.junit.opcodes.if_gt.d.T_if_gt_3;
+
+public class Test_if_gt extends DxTestCase {
+
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_gt_3 t = new T_if_gt_3();
+        assertEquals(1, t.run(1f, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title  branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d
new file mode 100644
index 0000000..293c1ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d
@@ -0,0 +1,23 @@
+.source T_if_gt_1.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.java
new file mode 100644
index 0000000..b71142f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gt.d;
+
+public class T_if_gt_1 {
+
+    public int run(int a, int b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d
new file mode 100644
index 0000000..7dd9ab7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d
@@ -0,0 +1,24 @@
+.source T_if_gt_10.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/4 v6, 0
+       return v6
+
+Label11:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.dfh
new file mode 100644
index 0000000..6d0aaad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0e2c42e5
+    E5 42 2C 0E 
+// parsed: offset 12, len 20: signature           : eb64...07d7
+    EB 64 9E 9B AE C0 F1 D7 E7 75 AE 37 77 BF 2B BB 7A D1 07 D7 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_gt_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gt_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gt v6, v7, 0004 // +0x0004
+//@mod            36 76 04 00 
+            36 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 2F 64 2F 54 5F 69 66 5F 67 74 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gt_10.java"
+    0F 54 5F 69 66 5F 67 74 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d
new file mode 100644
index 0000000..13fa794
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_gt_11.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.dfh
new file mode 100644
index 0000000..9822137
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.dfh
@@ -0,0 +1,278 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_11.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6c2e423c
+    3C 42 2E 6C 
+// parsed: offset 12, len 20: signature           : 5443...b674
+    54 43 D6 BD FA E8 4D 02 23 47 91 E4 D9 A6 90 BB B7 BD B6 74 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 312 (0x000138) "<init>"
+    38 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 320 (0x000140) "F"
+    40 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 323 (0x000143) "I"
+    43 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 326 (0x000146) "IFF"
+    46 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 331 (0x00014b) "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    4B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "Ljava/lang/Object;"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 391 (0x000187) "T_if_gt_11.java"
+    87 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 408 (0x000198) "V"
+    98 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 411 (0x00019b) "run"
+    9B 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "F"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "I"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "Ljava/lang/Object;"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "V"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "IFF"
+//     return_type_idx: 1 (0x000001) "I"
+//     parameters_off: 304 (0x000130)
+    03 00 00 00 01 00 00 00 30 01 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    07 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 8 (0x000008) "run"
+    02 00 00 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 3 (0x000003)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    03 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 2 "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 6 "T_if_gt_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 416 (0x0001a0)
+//     static_values_off: 0 (0x000000)
+    02 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 A0 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_11.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gt v6, v7, 0005 // +0x0005
+//@mod            36 76 05 00 
+            36 76 00 00 
+        // parsed: offset 292, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 296, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 298, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 300, len 2: |0006: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 302, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 312, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 320, len 3: TYPE_STRING_DATA_ITEM [1] "F"
+    01 46 00 
+// parsed: offset 323, len 3: TYPE_STRING_DATA_ITEM [2] "I"
+    01 49 00 
+// parsed: offset 326, len 5: TYPE_STRING_DATA_ITEM [3] "IFF"
+    03 49 46 46 00 
+// parsed: offset 331, len 40: TYPE_STRING_DATA_ITEM [4] "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 2F 64 2F 54 5F 69 66 5F 67 74 5F 31 31 3B 00 
+// parsed: offset 371, len 20: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 391, len 17: TYPE_STRING_DATA_ITEM [6] "T_if_gt_11.java"
+    0F 54 5F 69 66 5F 67 74 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [7] "V"
+    01 56 00 
+// parsed: offset 411, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    // parsed: offset 416, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 417, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 418, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 419, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 421, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 424, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 426, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 427, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 428, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 430, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 312 (0x000138)
+        02 20 00 00 09 00 00 00 38 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 416 (0x0001a0)
+        00 20 00 00 01 00 00 00 A0 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d
new file mode 100644
index 0000000..30e3b81
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_gt_2.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.java
new file mode 100644
index 0000000..136d619
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_gt.d;
+
+public class T_if_gt_2 {
+
+    public int run(float a, float b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d
new file mode 100644
index 0000000..75d4d17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d
@@ -0,0 +1,23 @@
+.source T_if_gt_3.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.java
new file mode 100644
index 0000000..9d53767
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gt.d;
+
+public class T_if_gt_3 {
+
+    public int run(float a, int b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d
new file mode 100644
index 0000000..f1ebef1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d
@@ -0,0 +1,23 @@
+.source T_if_gt_4.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-gt v7, v8, Label11
+       const/16 v7, 1234
+       return v7
+
+Label11:
+       const/4 v7, 1
+       return v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d
new file mode 100644
index 0000000..829291b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d
@@ -0,0 +1,23 @@
+.source T_if_gt_5.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-gt v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d
new file mode 100644
index 0000000..39b3541
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d
@@ -0,0 +1,23 @@
+.source T_if_gt_6.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-gt v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d
new file mode 100644
index 0000000..88b8364
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d
@@ -0,0 +1,23 @@
+.source T_if_gt_7.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d
new file mode 100644
index 0000000..8325322
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_gt_8.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-gt v6, v0, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d
new file mode 100644
index 0000000..198d870
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d
@@ -0,0 +1,23 @@
+.source T_if_gt_9.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/4 v6, 0
+       return v6
+
+Label11:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.dfh
new file mode 100644
index 0000000..a9549db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c6c73e51
+    51 3E C7 C6 
+// parsed: offset 12, len 20: signature           : e023...c1e9
+    E0 23 56 87 13 06 4B 95 E5 A7 64 7B 18 5C 6F 2D BC 12 C1 E9 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_gt_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gt_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gt v6, v7, 0004 // +0x0004
+//@mod      36 76 04 00 
+            36 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 2F 64 2F 54 5F 69 66 5F 67 74 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_gt_9.java"
+    0E 54 5F 69 66 5F 67 74 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/Test_if_gtz.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/Test_if_gtz.java
new file mode 100644
index 0000000..86a5535
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/Test_if_gtz.java
@@ -0,0 +1,151 @@
+package dot.junit.opcodes.if_gtz;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_gtz.d.T_if_gtz_1;
+import dot.junit.opcodes.if_gtz.d.T_if_gtz_2;
+
+public class Test_if_gtz extends DxTestCase {
+
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_gtz_2 t = new T_if_gtz_2();
+        assertEquals(1, t.run(1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1234, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d
new file mode 100644
index 0000000..2207436
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_1.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gtz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.java
new file mode 100644
index 0000000..cca881f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gtz.d;
+
+public class T_if_gtz_1 {
+
+    public int run(int a) {
+        return a > 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d
new file mode 100644
index 0000000..4119a6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d
@@ -0,0 +1,24 @@
+.source T_if_gtz_10.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gtz v5, Label8
+       const/4 v0, 0
+       return v0
+
+Label8:
+       nop
+       const v0, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dfh
new file mode 100644
index 0000000..5007f63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dfh
@@ -0,0 +1,278 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 63564126
+    26 41 56 63 
+// parsed: offset 12, len 20: signature           : a735...e471
+    A7 35 3A 24 84 99 A8 9A B8 55 11 8C 64 FC 37 6F C2 8A E4 71 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_gtz_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 405 (0x000195) "V"
+    95 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 408 (0x000198) "Z"
+    98 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 411 (0x00019b) "ZI"
+    9B 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gtz_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gtz v5, 0004 // +0x0004
+//@mod            3C 05 04 00 
+            3C 05 00 00 
+        // parsed: offset 292, len 2: |0002: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 294, len 2: |0003: return v0
+            0F 00 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 6: |0005: const v0, #float 0.000000 // #0x00000000 int
+            14 00 00 00 00 00 
+        // parsed: offset 304, len 2: |0008: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 7A 2F 64 2F 54 5F 69 66 5F 67 74 7A 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_gtz_10.java"
+    10 54 5F 69 66 5F 67 74 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 405, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 411, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d
new file mode 100644
index 0000000..b57c6ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_2.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-gtz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.java
new file mode 100644
index 0000000..ea1def0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gtz.d;
+
+public class T_if_gtz_2 {
+
+    public int run(float a) {
+        return a > 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d
new file mode 100644
index 0000000..c2db4b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_3.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gtz v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d
new file mode 100644
index 0000000..98e01e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_4.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-gtz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d
new file mode 100644
index 0000000..29f8800
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_5.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-gtz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d
new file mode 100644
index 0000000..a91668e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_6.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-gtz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d
new file mode 100644
index 0000000..71a5bfc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_gtz_7.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gtz v0, Label9
+       const/16 v0, 1234
+       return v0
+
+Label9:
+       const/4 v0, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d
new file mode 100644
index 0000000..5bf3d9c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d
@@ -0,0 +1,24 @@
+.source T_if_gtz_8.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gtz v5, Label8
+       const/4 v0, 0
+       return v0
+
+Label8:
+       nop
+       const/4 v0, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dfh
new file mode 100644
index 0000000..2af60bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dfh
@@ -0,0 +1,276 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 00484033
+    33 40 48 00 
+// parsed: offset 12, len 20: signature           : d58a...b651
+    D5 8A 12 27 F2 10 E0 5C 52 C9 68 FB 6C 6D 37 15 4D E8 B6 51 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 310 (0x000136) "<init>"
+    36 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 318 (0x00013e) "I"
+    3E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 362 (0x00016a) "Ljava/lang/Object;"
+    6A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 382 (0x00017e) "T_if_gtz_8.java"
+    7E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 399 (0x00018f) "V"
+    8F 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 402 (0x000192) "Z"
+    92 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 405 (0x000195) "ZI"
+    95 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 409 (0x000199) "run"
+    99 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 304 (0x000130)
+    07 00 00 00 04 00 00 00 30 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gtz_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 414 (0x00019e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gtz v5, 0004 // +0x0004
+//@mod            3C 05 04 00 
+            3C 05 04 01 
+        // parsed: offset 292, len 2: |0002: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 294, len 2: |0003: return v0
+            0F 00 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 300, len 2: |0006: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 302, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 310, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 318, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 321, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 7A 2F 64 2F 54 5F 69 66 5F 67 74 7A 5F 38 3B 00 
+// parsed: offset 362, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 382, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gtz_8.java"
+    0F 54 5F 69 66 5F 67 74 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 402, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 405, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 409, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    // parsed: offset 414, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 415, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 416, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 417, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 419, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 422, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 425, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 426, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 310 (0x000136)
+        02 20 00 00 09 00 00 00 36 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 414 (0x00019e)
+        00 20 00 00 01 00 00 00 9E 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d
new file mode 100644
index 0000000..08e8ff9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_9.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gtz v5, Label8
+       const/4 v0, 0
+       return v0
+
+Label8:
+       const v0, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dfh
new file mode 100644
index 0000000..1c600fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 910f41e3
+    E3 41 0F 91 
+// parsed: offset 12, len 20: signature           : 897e...e923
+    89 7E 66 D4 A6 63 A4 C3 FF C5 35 EC 5B 7C 65 85 1B E2 E9 23 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 310 (0x000136) "<init>"
+    36 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 318 (0x00013e) "I"
+    3E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 362 (0x00016a) "Ljava/lang/Object;"
+    6A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 382 (0x00017e) "T_if_gtz_9.java"
+    7E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 399 (0x00018f) "V"
+    8F 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 402 (0x000192) "Z"
+    92 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 405 (0x000195) "ZI"
+    95 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 409 (0x000199) "run"
+    99 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 304 (0x000130)
+    07 00 00 00 04 00 00 00 30 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gtz_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 414 (0x00019e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gtz v5, 0004 // +0x0004
+//@mod            3C 05 04 00 
+            3C 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 294, len 2: |0003: return v0
+            0F 00 
+        // parsed: offset 296, len 6: |0004: const v0, #float 0.000000 // #0x00000000 int
+            14 00 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 310, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 318, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 321, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 7A 2F 64 2F 54 5F 69 66 5F 67 74 7A 5F 39 3B 00 
+// parsed: offset 362, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 382, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gtz_9.java"
+    0F 54 5F 69 66 5F 67 74 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 402, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 405, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 409, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    // parsed: offset 414, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 415, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 416, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 417, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 419, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 422, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 425, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 426, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 310 (0x000136)
+        02 20 00 00 09 00 00 00 36 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 414 (0x00019e)
+        00 20 00 00 01 00 00 00 9E 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/Test_if_le.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/Test_if_le.java
new file mode 100644
index 0000000..852324b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/Test_if_le.java
@@ -0,0 +1,176 @@
+package dot.junit.opcodes.if_le;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_le.d.T_if_le_1;
+import dot.junit.opcodes.if_le.d.T_if_le_11;
+
+public class Test_if_le extends DxTestCase {
+    
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_le_11 t = new T_if_le_11();
+        assertEquals(1, t.run(1, 1f));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1234, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.d
new file mode 100644
index 0000000..a9fbd14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.d
@@ -0,0 +1,23 @@
+.source T_if_le_1.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.java
new file mode 100644
index 0000000..65d5da6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_le.d;
+
+public class T_if_le_1 {
+
+    public int run(int a, int b) {
+        return a <= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.d
new file mode 100644
index 0000000..7c9ca12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.d
@@ -0,0 +1,24 @@
+.source T_if_le_10.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-le v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.dfh
new file mode 100644
index 0000000..9c55965
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0713407a
+    7A 40 13 07 
+// parsed: offset 12, len 20: signature           : eb53...56c4
+    EB 53 CD DC C5 02 DC 05 C8 B3 F8 3D 81 26 1E 13 2F 96 56 C4 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_le_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_le_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-le v6, v7, 0004 // +0x0004
+//@mod            37 76 04 00 
+            37 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 2F 64 2F 54 5F 69 66 5F 6C 65 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_le_10.java"
+    0F 54 5F 69 66 5F 6C 65 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.d
new file mode 100644
index 0000000..aaeecc9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.d
@@ -0,0 +1,23 @@
+.source T_if_le_11.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.java
new file mode 100644
index 0000000..b92d796
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_le.d;
+
+public class T_if_le_11 {
+
+    public int run(int a, float b) {
+        return a <= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.d
new file mode 100644
index 0000000..2f9f581
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.d
@@ -0,0 +1,23 @@
+.source T_if_le_12.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.dfh
new file mode 100644
index 0000000..a8735cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.dfh
@@ -0,0 +1,272 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : cae53e73
+    73 3E E5 CA 
+// parsed: offset 12, len 20: signature           : 28b0...6742
+    28 B0 39 0C B7 33 C6 C9 90 4E 13 C6 72 E1 E3 3E 9A 8A 67 42 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 304 (0x000130) "<init>"
+    30 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 312 (0x000138) "I"
+    38 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 315 (0x00013b) "III"
+    3B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "T_if_le_12.java"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "run"
+    90 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "III"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 00 00 00 00 28 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_if_le_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_12.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_12.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-le v6, v7, 0005 // +0x0005
+//@mod            37 76 05 00 
+            37 76 00 00 
+        // parsed: offset 284, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 288, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 290, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 292, len 2: |0006: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 302, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 304, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 312, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 315, len 5: TYPE_STRING_DATA_ITEM [2] "III"
+    03 49 49 49 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 2F 64 2F 54 5F 69 66 5F 6C 65 5F 31 32 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 17: TYPE_STRING_DATA_ITEM [5] "T_if_le_12.java"
+    0F 54 5F 69 66 5F 6C 65 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 409, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 410, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 413, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 416, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 417, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 419, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 304 (0x000130)
+        02 20 00 00 08 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.d
new file mode 100644
index 0000000..e389992
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_le_3.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.d
new file mode 100644
index 0000000..514c26b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.d
@@ -0,0 +1,23 @@
+.source T_if_le_4.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.d
new file mode 100644
index 0000000..a70e43f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.d
@@ -0,0 +1,23 @@
+.source T_if_le_5.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-le v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+       
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.d
new file mode 100644
index 0000000..fb8bb3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.d
@@ -0,0 +1,23 @@
+.source T_if_le_6.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-le v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.d
new file mode 100644
index 0000000..cf76654
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.d
@@ -0,0 +1,23 @@
+.source T_if_le_7.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.d
new file mode 100644
index 0000000..34562f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_le_8.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v0, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.d
new file mode 100644
index 0000000..99fa7c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.d
@@ -0,0 +1,23 @@
+.source T_if_le_9.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-le v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.dfh
new file mode 100644
index 0000000..51da483
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 9b4b41ee
+    EE 41 4B 9B 
+// parsed: offset 12, len 20: signature           : eaf2...5695
+    EA F2 77 CB B7 40 83 E4 FA CE 5D C9 DE E0 C3 20 0C 85 56 95 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_le_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_le_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-le v6, v7, 0004 // +0x0004
+//@mod      37 76 04 00 
+            37 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 2F 64 2F 54 5F 69 66 5F 6C 65 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_le_9.java"
+    0E 54 5F 69 66 5F 6C 65 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/Test_if_lez.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/Test_if_lez.java
new file mode 100644
index 0000000..4f72938
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/Test_if_lez.java
@@ -0,0 +1,152 @@
+package dot.junit.opcodes.if_lez;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_lez.d.T_if_lez_1;
+import dot.junit.opcodes.if_lez.d.T_if_lez_2;
+
+public class Test_if_lez extends DxTestCase {
+
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_lez_2 t = new T_if_lez_2();
+        assertEquals(1, t.run(-1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d
new file mode 100644
index 0000000..6429797
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d
@@ -0,0 +1,23 @@
+.source T_if_lez_1.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-lez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.java
new file mode 100644
index 0000000..b3d7441
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lez.d;
+
+public class T_if_lez_1 {
+
+    public int run(int a) {
+        return a <= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d
new file mode 100644
index 0000000..82a8268
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d
@@ -0,0 +1,23 @@
+.source T_if_lez_10.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-lez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.dfh
new file mode 100644
index 0000000..66ce09b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_10.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ca1e4159
+    59 41 1E CA 
+// parsed: offset 12, len 20: signature           : 43ef...3a58
+    43 EF DB CD B8 45 E7 FA DE 03 53 F0 4C 14 8B A8 BE 13 3A 58 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_lez_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lez_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lez v5, 0004 // +0x0004
+//@mod      3D 05 04 00 
+            3D 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 7A 2F 64 2F 54 5F 69 66 5F 6C 65 7A 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_lez_10.java"
+    10 54 5F 69 66 5F 6C 65 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d
new file mode 100644
index 0000000..cbe7f34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d
@@ -0,0 +1,23 @@
+.source T_if_lez_2.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-lez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.java
new file mode 100644
index 0000000..37ce198
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lez.d;
+
+public class T_if_lez_2 {
+
+    public int run(float a) {
+        return a <= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d
new file mode 100644
index 0000000..4efd27a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d
@@ -0,0 +1,23 @@
+.source T_if_lez_3.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-lez v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d
new file mode 100644
index 0000000..985254d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d
@@ -0,0 +1,23 @@
+.source T_if_lez_4.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-lez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d
new file mode 100644
index 0000000..705c855
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d
@@ -0,0 +1,23 @@
+.source T_if_lez_5.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-lez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d
new file mode 100644
index 0000000..596f1d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d
@@ -0,0 +1,23 @@
+.source T_if_lez_6.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-lez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d
new file mode 100644
index 0000000..129b4bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_lez_7.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-lez v0, Label9
+       const/16 v0, 1234
+       return v0
+
+Label9:
+       const/4 v0, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d
new file mode 100644
index 0000000..b21ab3e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d
@@ -0,0 +1,23 @@
+.source T_if_lez_8.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-lez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.dfh
new file mode 100644
index 0000000..d1e27e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 65b03e79
+    79 3E B0 65 
+// parsed: offset 12, len 20: signature           : 3e9a...b229
+    3E 9A CC 34 9B 91 4F 6B 11 37 FE 19 56 10 75 54 A2 9B B2 29 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_lez_8.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lez_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lez v5, 0004 // +0x0004
+//@mod      3D 05 04 00 
+            3D 05 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 7A 2F 64 2F 54 5F 69 66 5F 6C 65 7A 5F 38 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lez_8.java"
+    0F 54 5F 69 66 5F 6C 65 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d
new file mode 100644
index 0000000..5efdeba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d
@@ -0,0 +1,24 @@
+.source T_if_lez_9.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-lez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.dfh
new file mode 100644
index 0000000..4ea81be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4845421a
+    1A 42 45 48 
+// parsed: offset 12, len 20: signature           : 9aec...318f
+    9A EC E7 D4 FF 76 22 57 6F 40 A8 ED 6A 91 9F 1B EF 80 31 8F 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 366 (0x00016e) "Ljava/lang/Object;"
+    6E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 386 (0x000182) "T_if_lez_9.java"
+    82 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "V"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "Z"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 409 (0x000199) "ZI"
+    99 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 413 (0x00019d) "run"
+    9D 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lez_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 418 (0x0001a2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lez v5, 0004 // +0x0004
+//@mod            3D 05 04 00 
+            3D 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 7A 2F 64 2F 54 5F 69 66 5F 6C 65 7A 5F 39 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 386, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lez_9.java"
+    0F 54 5F 69 66 5F 6C 65 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 406, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 409, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 413, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    // parsed: offset 418, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 419, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 420, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 421, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 423, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 426, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 429, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 430, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 418 (0x0001a2)
+        00 20 00 00 01 00 00 00 A2 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/Test_if_lt.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/Test_if_lt.java
new file mode 100644
index 0000000..26a3faa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/Test_if_lt.java
@@ -0,0 +1,175 @@
+package dot.junit.opcodes.if_lt;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_lt.d.T_if_lt_1;
+import dot.junit.opcodes.if_lt.d.T_if_lt_11;
+
+public class Test_if_lt extends DxTestCase {
+
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_lt_11 t = new T_if_lt_11();
+        assertEquals(1, t.run(1, 1f));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d
new file mode 100644
index 0000000..c81d8b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_1.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.java
new file mode 100644
index 0000000..5a2e8e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lt.d;
+
+public class T_if_lt_1 {
+
+    public int run(int a, int b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d
new file mode 100644
index 0000000..4821984
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d
@@ -0,0 +1,24 @@
+.source T_if_lt_10.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-lt v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.dfh
new file mode 100644
index 0000000..bb2ed5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c726416b
+    6B 41 26 C7 
+// parsed: offset 12, len 20: signature           : 7db8...3ca9
+    7D B8 1E 21 EA 87 C8 52 ED CF 14 C9 4B F4 E9 12 D4 32 3C A9 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_lt_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lt_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lt v6, v7, 0004 // +0x0004
+//@mod            34 76 04 00 
+            34 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 2F 64 2F 54 5F 69 66 5F 6C 74 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lt_10.java"
+    0F 54 5F 69 66 5F 6C 74 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d
new file mode 100644
index 0000000..7e80ecf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_11.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.java
new file mode 100644
index 0000000..cc3323f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lt.d;
+
+public class T_if_lt_11 {
+
+    public int run(int a, float b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d
new file mode 100644
index 0000000..f9083cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d
@@ -0,0 +1,23 @@
+.source T_if_lt_12.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-lt v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.dfh
new file mode 100644
index 0000000..aed0448
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.dfh
@@ -0,0 +1,276 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 69884064
+    64 40 88 69 
+// parsed: offset 12, len 20: signature           : 48bf...a511
+    48 BF EF 03 CC F9 FF EF 11 EC 1C 2E E4 83 0B D9 37 34 A5 11 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_lt_12.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lt_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_12.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_12.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lt v6, v7, 0004 // +0x0004
+//@mod            34 76 04 00 
+            34 76 00 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 2F 64 2F 54 5F 69 66 5F 6C 74 5F 31 32 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lt_12.java"
+    0F 54 5F 69 66 5F 6C 74 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d
new file mode 100644
index 0000000..94546c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpge_2.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.java
new file mode 100644
index 0000000..14e148c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_lt.d;
+
+public class T_if_lt_2 {
+
+    public int run(float a, float b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d
new file mode 100644
index 0000000..9a93ac6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_4.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-lt v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d
new file mode 100644
index 0000000..7d77ad9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_5.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-lt v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d
new file mode 100644
index 0000000..9d1910e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_6.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-lt v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d
new file mode 100644
index 0000000..8d126c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_7.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d
new file mode 100644
index 0000000..8c2f2ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d
@@ -0,0 +1,23 @@
+.source T_if_lt_9.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-lt v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.dfh
new file mode 100644
index 0000000..10b38ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b45f4033
+    33 40 5F B4 
+// parsed: offset 12, len 20: signature           : 4cb8...7b33
+    4C B8 1D 60 D7 F6 8E D3 C9 42 C8 6B 13 3F AD C6 EB 57 7B 33 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_lt_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lt_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lt v6, v7, 0004 // +0x0004
+//@mod      34 76 04 00 
+            34 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 2F 64 2F 54 5F 69 66 5F 6C 74 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_lt_9.java"
+    0E 54 5F 69 66 5F 6C 74 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/Test_if_ltz.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/Test_if_ltz.java
new file mode 100644
index 0000000..b70d16e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/Test_if_ltz.java
@@ -0,0 +1,150 @@
+package dot.junit.opcodes.if_ltz;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_ltz.d.T_if_ltz_1;
+import dot.junit.opcodes.if_ltz.d.T_if_ltz_2;
+
+public class Test_if_ltz extends DxTestCase {
+
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_ltz_2 t = new T_if_ltz_2();
+        assertEquals(1234, t.run(1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1234, t.run(0));
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d
new file mode 100644
index 0000000..7022a90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_1.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-ltz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.java
new file mode 100644
index 0000000..7e666cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ltz.d;
+
+public class T_if_ltz_1 {
+
+    public int run(int a) {
+        return a < 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d
new file mode 100644
index 0000000..aa01356
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_2.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-ltz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.java
new file mode 100644
index 0000000..0c0480e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ltz.d;
+
+public class T_if_ltz_2 {
+
+    public int run(float a) {
+        return a < 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d
new file mode 100644
index 0000000..d2405ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_3.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-ltz v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d
new file mode 100644
index 0000000..804ef88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_4.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-ltz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d
new file mode 100644
index 0000000..af8e741
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_5.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-ltz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d
new file mode 100644
index 0000000..c56730f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_6.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-ltz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d
new file mode 100644
index 0000000..f14a551
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_7.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-ltz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dfh
new file mode 100644
index 0000000..afb4652
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dfh
@@ -0,0 +1,272 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7337400f
+    0F 40 37 73 
+// parsed: offset 12, len 20: signature           : 0250...bf7f
+    02 50 04 7A E3 17 74 3C 13 73 F6 D7 EA 11 9E F4 EC 4E BF 7F 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_ltz_7.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ltz_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_7.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_7.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ltz v5, 0004 // +0x0004
+//@mod      3A 05 04 00 
+            3A 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 7A 2F 64 2F 54 5F 69 66 5F 6C 74 7A 5F 37 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ltz_7.java"
+    0F 54 5F 69 66 5F 6C 74 7A 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d
new file mode 100644
index 0000000..650e299
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_8.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-ltz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dfh
new file mode 100644
index 0000000..dc3b594
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6a9b3f87
+    87 3F 9B 6A 
+// parsed: offset 12, len 20: signature           : 2cbc...44c1
+    2C BC B6 C9 37 D4 49 42 95 BD 36 89 BC B0 07 51 07 6A 44 C1 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_ltz_8.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ltz_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ltz v5, 0004 // +0x0004
+//@mod      3A 05 04 00 
+            3A 05 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 7A 2F 64 2F 54 5F 69 66 5F 6C 74 7A 5F 38 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ltz_8.java"
+    0F 54 5F 69 66 5F 6C 74 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d
new file mode 100644
index 0000000..3b4a3dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d
@@ -0,0 +1,24 @@
+.source T_if_ltz_9.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-ltz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dfh
new file mode 100644
index 0000000..dc5146c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 9e5c41e6
+    E6 41 5C 9E 
+// parsed: offset 12, len 20: signature           : c9e3...0f3f
+    C9 E3 71 AB 73 15 F5 E7 72 4D 3A A7 77 F4 E9 3F FF 4D 0F 3F 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 366 (0x00016e) "Ljava/lang/Object;"
+    6E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 386 (0x000182) "T_if_ltz_9.java"
+    82 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "V"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "Z"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 409 (0x000199) "ZI"
+    99 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 413 (0x00019d) "run"
+    9D 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ltz_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 418 (0x0001a2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ltz v5, 0004 // +0x0004
+//@mod            3A 05 04 00 
+            3A 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 7A 2F 64 2F 54 5F 69 66 5F 6C 74 7A 5F 39 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 386, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ltz_9.java"
+    0F 54 5F 69 66 5F 6C 74 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 406, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 409, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 413, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    // parsed: offset 418, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 419, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 420, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 421, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 423, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 426, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 429, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 430, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 418 (0x0001a2)
+        00 20 00 00 01 00 00 00 A2 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/Test_if_ne.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/Test_if_ne.java
new file mode 100644
index 0000000..610fe96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/Test_if_ne.java
@@ -0,0 +1,205 @@
+package dot.junit.opcodes.if_ne;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_ne.d.T_if_ne_1;
+import dot.junit.opcodes.if_ne.d.T_if_ne_2;
+import dot.junit.opcodes.if_ne.d.T_if_ne_4;
+
+public class Test_if_ne extends DxTestCase {
+
+    /**
+     * @title Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title Arguments = 0x01001234, 0x1234
+     */
+    public void testN4() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(0x01001234, 0x1234));
+    }
+    
+    /**
+     * @title compare references
+     */
+    public void testN5() {
+        T_if_ne_2 t = new T_if_ne_2();
+        String a = "a";
+        String b = "b";
+        assertEquals(1, t.run(a, b));
+    }
+
+    /**
+     * @title compare references
+     */
+    public void testN6() {
+        T_if_ne_2 t = new T_if_ne_2();
+        String a = "a";
+        assertEquals(1234, t.run(a, a));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_if_ne_4 t = new T_if_ne_4();
+        assertEquals(1, t.run(1f, 1));
+    }  
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 1234567
+     */
+    public void testB3() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(0, 1234567));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB4() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+    
+    /**
+     * @title Compare with null
+     */
+    public void testB5() {
+        T_if_ne_2 t = new T_if_ne_2();
+        String a = "a";
+        assertEquals(1, t.run(null, a));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d
new file mode 100644
index 0000000..cb84784
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d
@@ -0,0 +1,23 @@
+.source T_if_ne_1.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ne v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.java
new file mode 100644
index 0000000..ebc05ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ne.d;
+
+public class T_if_ne_1 {
+
+    public int run(int a, int b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d
new file mode 100644
index 0000000..f42d830
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d
@@ -0,0 +1,23 @@
+.source T_if_ne_10.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ne v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.dfh
new file mode 100644
index 0000000..f5f9427
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 095c418d
+    8D 41 5C 09 
+// parsed: offset 12, len 20: signature           : c237...7d40
+    C2 37 DB 94 22 A2 D1 8C 42 64 8C F7 AF 4F F0 C2 C2 D3 7D 40 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_ne_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ne_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ne v6, v7, 0004 // +0x0004
+//@mod      33 76 04 00 
+            33 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 2F 64 2F 54 5F 69 66 5F 6E 65 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ne_10.java"
+    0F 54 5F 69 66 5F 6E 65 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d
new file mode 100644
index 0000000..65bb0d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d
@@ -0,0 +1,24 @@
+.source T_if_ne_11.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ne v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.dfh
new file mode 100644
index 0000000..8b5c5e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c3f03ff3
+    F3 3F F0 C3 
+// parsed: offset 12, len 20: signature           : 1786...89ee
+    17 86 0D 00 7F F4 86 BF 36 21 B8 93 62 57 3D EA B7 59 89 EE 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_ne_11.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ne_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_11.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ne v6, v7, 0004 // +0x0004
+//@mod            33 76 04 00 
+            33 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 2F 64 2F 54 5F 69 66 5F 6E 65 5F 31 31 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ne_11.java"
+    0F 54 5F 69 66 5F 6E 65 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d
new file mode 100644
index 0000000..0893fa4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d
@@ -0,0 +1,23 @@
+.source T_if_ne_12.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ne v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.dfh
new file mode 100644
index 0000000..e78249f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.dfh
@@ -0,0 +1,276 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 37603d62
+    62 3D 60 37 
+// parsed: offset 12, len 20: signature           : 24e7...4311
+    24 E7 8D 35 83 34 1E 83 9C DE 27 13 02 76 B3 A3 53 37 43 11 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_ne_12.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ne_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_12.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_12.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ne v6, v7, 0004 // +0x0004
+//@mod            33 76 04 00 
+            33 76 00 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 2F 64 2F 54 5F 69 66 5F 6E 65 5F 31 32 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ne_12.java"
+    0F 54 5F 69 66 5F 6E 65 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d
new file mode 100644
index 0000000..039f954
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d
@@ -0,0 +1,23 @@
+.source T_if_ne_2.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.limit regs 8
+
+       if-ne v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.java
new file mode 100644
index 0000000..79c7519
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ne.d;
+
+public class T_if_ne_2 {
+
+    public int run(String a, String b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d
new file mode 100644
index 0000000..aaa66e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d
@@ -0,0 +1,23 @@
+.source T_if_ne_4.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-ne v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.java
new file mode 100644
index 0000000..fbd1049
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ne.d;
+
+public class T_if_ne_4 {
+
+    public int run(float a, int b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d
new file mode 100644
index 0000000..4bfefaa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d
@@ -0,0 +1,23 @@
+.source T_if_ne_5.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ne v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d
new file mode 100644
index 0000000..5e57f66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d
@@ -0,0 +1,23 @@
+.source T_if_ne_7.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-ne v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d
new file mode 100644
index 0000000..0001b04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d
@@ -0,0 +1,23 @@
+.source T_if_ne_8.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-ne v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d
new file mode 100644
index 0000000..4f3f107
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d
@@ -0,0 +1,23 @@
+.source T_if_ne_9.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ne v6, v5, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/Test_if_nez.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/Test_if_nez.java
new file mode 100644
index 0000000..1283f37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/Test_if_nez.java
@@ -0,0 +1,159 @@
+package dot.junit.opcodes.if_nez;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_nez.d.T_if_nez_1;
+import dot.junit.opcodes.if_nez.d.T_if_nez_2;
+import dot.junit.opcodes.if_nez.d.T_if_nez_3;
+import dot.junit.opcodes.if_nez.d.T_if_nez_4;
+
+public class Test_if_nez extends DxTestCase {
+    
+    /**
+     * @title Argument = 5 and -5
+     */
+    public void testN1() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1, t.run(5));
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title Arguments = null
+     */
+    public void testN2() {
+        T_if_nez_2 t = new T_if_nez_2();
+        String str = null;
+        assertEquals(1234, t.run(str));
+    }
+    
+    /**
+     * @title Arguments = not null
+     */
+    public void testN3() {
+        T_if_nez_2 t = new T_if_nez_2();
+        String str = "abc";
+        assertEquals(1, t.run(str));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_nez_3 t = new T_if_nez_3();
+        assertEquals(1, t.run(3.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1234, t.run(0));
+    }
+    
+    /**
+     * @title Compare reference with null
+     */
+    public void testB4() {
+        T_if_nez_4 t = new T_if_nez_4();
+        assertEquals(1234, t.run(null));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint A6 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d
new file mode 100644
index 0000000..da15ff2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d
@@ -0,0 +1,23 @@
+.source T_ifne_1.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.java
new file mode 100644
index 0000000..7e8aab3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_1 {
+
+    public int run(int a) {
+        return a != 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d
new file mode 100644
index 0000000..4a5a9a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d
@@ -0,0 +1,24 @@
+.source T_if_nez_10.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-nez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.dfh
new file mode 100644
index 0000000..c690b98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.dfh
@@ -0,0 +1,278 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f7d6442e
+    2E 44 D6 F7 
+// parsed: offset 12, len 20: signature           : b285...f2c1
+    B2 85 AD 8B CF 5D F1 BB 04 91 E9 46 C9 64 A2 AE E4 DA F2 C1 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_nez_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 405 (0x000195) "V"
+    95 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 408 (0x000198) "Z"
+    98 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 411 (0x00019b) "ZI"
+    9B 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_nez_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-nez v5, 0004 // +0x0004
+//@mod            39 05 04 00 
+            39 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 7A 2F 64 2F 54 5F 69 66 5F 6E 65 7A 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_nez_10.java"
+    10 54 5F 69 66 5F 6E 65 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 405, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 411, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d
new file mode 100644
index 0000000..81ef2ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d
@@ -0,0 +1,23 @@
+.source T_if_nez_11.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-nez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.dfh
new file mode 100644
index 0000000..07373f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_11.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a76043b4
+    B4 43 60 A7 
+// parsed: offset 12, len 20: signature           : 1a2c...f8f3
+    1A 2C DB A0 C2 B5 CC A7 79 C0 8C CA A6 EE F6 C4 35 81 F8 F3 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_nez_11.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_nez_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_11.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-nez v5, 0004 // +0x0004
+//@mod      39 05 04 00 
+            39 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 7A 2F 64 2F 54 5F 69 66 5F 6E 65 7A 5F 31 31 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_nez_11.java"
+    10 54 5F 69 66 5F 6E 65 7A 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d
new file mode 100644
index 0000000..d95004a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d
@@ -0,0 +1,23 @@
+.source T_ifne_2.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.java
new file mode 100644
index 0000000..802b021
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_2 {
+
+    public int run(String o) {
+        return o != null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d
new file mode 100644
index 0000000..ea90b8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d
@@ -0,0 +1,23 @@
+.source T_ifne_3.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.java
new file mode 100644
index 0000000..149b181
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_3 {
+
+    public int run(float a) {
+        return a != 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d
new file mode 100644
index 0000000..efe46b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d
@@ -0,0 +1,23 @@
+.source T_ifne_4.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.java
new file mode 100644
index 0000000..96b98a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_4 {
+
+    public int run(Object o) {
+        return o != null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d
new file mode 100644
index 0000000..8640ec1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d
@@ -0,0 +1,23 @@
+.source T_ifne_5.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-nez v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d
new file mode 100644
index 0000000..67348ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d
@@ -0,0 +1,23 @@
+.source T_ifne_6.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-nez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d
new file mode 100644
index 0000000..b22102e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d
@@ -0,0 +1,23 @@
+.source T_ifne_7.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-nez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d
new file mode 100644
index 0000000..5ea760a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d
@@ -0,0 +1,23 @@
+.source T_if_nez_9.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-nez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.dfh
new file mode 100644
index 0000000..acd19bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 533b414c
+    4C 41 3B 53 
+// parsed: offset 12, len 20: signature           : a2dd...7edb
+    A2 DD 9C 8A FB 23 5C 93 89 55 98 BF E0 6A 76 51 CB 17 7E DB 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_nez_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_nez_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-nez v5, 0004 // +0x0004
+//@mod      39 05 04 00 
+            39 05 04 01
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 7A 2F 64 2F 54 5F 69 66 5F 6E 65 7A 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_nez_9.java"
+    0F 54 5F 69 66 5F 6E 65 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/TestStubs.java
new file mode 100644
index 0000000..07bb886
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget;
+
+public class TestStubs {
+    // used by testVFE4
+    private int TestStubField = 50;
+    // ussed by testVFE15
+    protected int TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/Test_iget.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/Test_iget.java
new file mode 100644
index 0000000..50658ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/Test_iget.java
@@ -0,0 +1,311 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget.d.T_iget_1;
+import dot.junit.opcodes.iget.d.T_iget_11;
+import dot.junit.opcodes.iget.d.T_iget_12;
+import dot.junit.opcodes.iget.d.T_iget_13;
+import dot.junit.opcodes.iget.d.T_iget_2;
+import dot.junit.opcodes.iget.d.T_iget_21;
+import dot.junit.opcodes.iget.d.T_iget_5;
+import dot.junit.opcodes.iget.d.T_iget_6;
+import dot.junit.opcodes.iget.d.T_iget_7;
+import dot.junit.opcodes.iget.d.T_iget_8;
+import dot.junit.opcodes.iget.d.T_iget_9;
+
+public class Test_iget extends DxTestCase {
+    
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_iget_1 t = new T_iget_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_iget_2 t = new T_iget_2();
+        assertEquals(123f, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_1
+        //@uses dot.junit.opcodes.iget.d.T_iget_11
+        T_iget_11 t = new T_iget_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_9 t = new T_iget_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B13 
+     * @title read integer from long field - only field with same name but 
+     * different type exist
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible private field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_6
+        //@uses dot.junit.opcodes.iget.TestStubs
+        try {
+            new T_iget_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_12
+        //@uses dot.junit.opcodes.iget.d.T_iget_1
+        try {
+            new T_iget_12().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read protected field of unrelated class.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_21
+        //@uses dot.junit.opcodes.iget.TestStubs
+        try {
+            new T_iget_21().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint A11
+     * @title Attempt to read static field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_5
+        //@uses dot.junit.opcodes.iget.TestStubs
+        try {
+            new T_iget_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.d
new file mode 100644
index 0000000..cac6528
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_1.java
+.class public dot.junit.opcodes.iget.d.T_iget_1
+.super java/lang/Object
+
+.field public  i1 I
+.field protected  p1 I
+.field private  pvt1 I
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const/4 v0, 5
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_1.i1 I
+
+       const/16 v0, 10
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_1.p1 I
+
+       const/16 v0, 20
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_1.pvt1 I
+       
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_1.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.java
new file mode 100644
index 0000000..1ce655a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_1 {
+    public  int i1 = 5;
+    protected  int p1 = 10;
+    private  int pvt1 = 20;
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.d
new file mode 100644
index 0000000..6e64e3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_11.java
+.class public dot.junit.opcodes.iget.d.T_iget_11
+.super dot/junit/opcodes/iget/d/T_iget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget/d/T_iget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_1.p1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.java
new file mode 100644
index 0000000..9d6b376
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_11 extends T_iget_1 {
+
+    public int run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.d
new file mode 100644
index 0000000..312dd9c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_12.java
+.class public dot.junit.opcodes.iget.d.T_iget_12
+.super dot/junit/opcodes/iget/d/T_iget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget/d/T_iget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_1.pvt1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.java
new file mode 100644
index 0000000..b9f40ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_12 extends T_iget_1 {
+
+    @Override
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.d
new file mode 100644
index 0000000..eed73b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_13.java
+.class public dot.junit.opcodes.iget.d.T_iget_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_13.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.java
new file mode 100644
index 0000000..1038f56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.d
new file mode 100644
index 0000000..faa6271
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_14.java
+.class public dot.junit.opcodes.iget.d.T_iget_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.d
new file mode 100644
index 0000000..d50305b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_15.java
+.class public dot.junit.opcodes.iget.d.T_iget_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.d
new file mode 100644
index 0000000..8a5253b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_16.java
+.class public dot.junit.opcodes.iget.d.T_iget_16
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.d
new file mode 100644
index 0000000..69d1af4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_17.java
+.class public dot.junit.opcodes.iget.d.T_iget_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.d
new file mode 100644
index 0000000..c081e55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_18.java
+.class public dot.junit.opcodes.iget.d.T_iget_18
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.d
new file mode 100644
index 0000000..a555e94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_19.java
+.class public dot.junit.opcodes.iget.d.T_iget_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.d
new file mode 100644
index 0000000..bf07640
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_2.java
+.class public dot.junit.opcodes.iget.d.T_iget_2
+.super java/lang/Object
+
+.field public  val F
+
+.method  <clinit>()V
+.limit regs 2
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 123.0
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_2.val F
+       
+       return-void
+.end method
+
+.method public run()F
+.limit regs 4
+
+       iget v1, v3, dot.junit.opcodes.iget.d.T_iget_2.val F
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.java
new file mode 100644
index 0000000..3efa19d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_2 {
+
+    public  float val = 123.0f;
+    
+    public float run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.d
new file mode 100644
index 0000000..b34faae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_20.java
+.class public dot.junit.opcodes.iget.d.T_iget_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.d
new file mode 100644
index 0000000..569458b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_21.java
+.class public dot.junit.opcodes.iget.d.T_iget_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget/TestStubs/<init>()V
+
+       iget v1, v0, dot.junit.opcodes.iget.TestStubs.TestStubProtectedField I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.java
new file mode 100644
index 0000000..31db5f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_21 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.d
new file mode 100644
index 0000000..f362d0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_3.java
+.class public dot.junit.opcodes.iget.d.T_iget_3
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v3, v2, dot.junit.opcodes.iget.d.T_iget_3.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.d
new file mode 100644
index 0000000..3564c81
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_30.java
+.class public dot.junit.opcodes.iget.d.T_iget_30
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget/d/T_iget_30
+    iget v1, v0, dot.junit.opcodes.iget.d.T_iget_30.st_i1 I
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.d
new file mode 100644
index 0000000..8336a2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_4.java
+.class public dot.junit.opcodes.iget.d.T_iget_4
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_4.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.dfh
new file mode 100644
index 0000000..c29f935
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget/d/T_iget_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget/d/T_iget_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 385d3b6c
+    6C 3B 5D 38 
+// parsed: offset 12, len 20: signature           : bbc1...00f4
+    BB C1 79 16 63 A5 BB 13 9D 24 11 CB 85 1F A6 17 C0 39 00 F4 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 296
+    28 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "I"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 344 (0x000158) "Ljava/lang/Object;"
+    58 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 364 (0x00016c) "T_iget_4.java"
+    6C 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 379 (0x00017b) "V"
+    7B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 382 (0x00017e) "i1"
+    7E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 386 (0x000182) "run"
+    82 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget/d/T_iget_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 391 (0x000187)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 87 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget.d.T_iget_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget.d.T_iget_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget v1, v2, Ldot/junit/opcodes/iget/d/T_iget_4;.i1:I // field@0000
+//@mod            52 21 00 00 
+            52 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 307, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 2F 64 2F 54 5F 69 67 65 74 5F 34 3B 00 
+// parsed: offset 344, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 364, len 15: TYPE_STRING_DATA_ITEM [4] "T_iget_4.java"
+    0D 54 5F 69 67 65 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 379, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 382, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 386, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    // parsed: offset 391, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 392, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 393, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 394, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 395, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 396, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 397, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 398, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 401, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 403, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 404, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 405, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 407, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 391 (0x000187)
+        00 20 00 00 01 00 00 00 87 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.d
new file mode 100644
index 0000000..7a7c3ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_5.java
+.class public dot.junit.opcodes.iget.d.T_iget_5
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_5.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.java
new file mode 100644
index 0000000..053f013
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_5 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.d
new file mode 100644
index 0000000..8ea70c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_6.java
+.class public dot.junit.opcodes.iget.d.T_iget_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget/TestStubs/<init>()V
+
+       iget v1, v0, dot.junit.opcodes.iget.TestStubs.TestStubField I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.java
new file mode 100644
index 0000000..efb61d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_6 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.d
new file mode 100644
index 0000000..a68b0f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_7.java
+.class public dot.junit.opcodes.iget.d.T_iget_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_7no_class.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.java
new file mode 100644
index 0000000..54b848f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_7 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.d
new file mode 100644
index 0000000..9fc3b75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_8.java
+.class public dot.junit.opcodes.iget.d.T_iget_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_8.i1N I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.java
new file mode 100644
index 0000000..249b4d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_8 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.d
new file mode 100644
index 0000000..268398c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_9.java
+.class public dot.junit.opcodes.iget.d.T_iget_9
+.super java/lang/Object
+
+.field public  val F
+
+.method  <clinit>()V
+.limit regs 2
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 4
+
+       const v0, 0
+       iget v1, v0, dot.junit.opcodes.iget.d.T_iget_9.val F
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.java
new file mode 100644
index 0000000..440ad6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_9 {
+
+    public  float val = 123.0f;
+    
+    public float run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/TestStubs.java
new file mode 100644
index 0000000..8dcd427
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean;
+
+public class TestStubs {
+    // used by testVFE4
+    private boolean TestStubField = true;
+    // used by testVFE15
+    protected boolean TestStubProtectedField = true;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/Test_iget_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/Test_iget_boolean.java
new file mode 100644
index 0000000..b23f330
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/Test_iget_boolean.java
@@ -0,0 +1,299 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_11;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_12;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_13;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_21;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_6;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_7;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_8;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_9;
+
+public class Test_iget_boolean extends DxTestCase {
+    
+    /**
+     * @title get boolean from field 
+     */
+    public void testN1() {
+        T_iget_boolean_1 t = new T_iget_boolean_1();
+        assertEquals(true, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_11
+        T_iget_boolean_11 t = new T_iget_boolean_11();
+        assertEquals(true, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_boolean_9 t = new T_iget_boolean_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+   
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B13 
+     * @title read boolean from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_boolean_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_6
+        //@uses dot.junit.opcodes.iget_boolean.TestStubs
+        try {
+            new T_iget_boolean_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_boolean_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_boolean_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_12
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1
+        try {
+            new T_iget_boolean_12().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_boolean shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_21
+        //@uses dot.junit.opcodes.iget_boolean.TestStubs
+        try {
+            new T_iget_boolean_21().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5
+        //@uses dot.junit.opcodes.iget_boolean.TestStubs
+        try {
+            new T_iget_boolean_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d
new file mode 100644
index 0000000..23b0a93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_1.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1
+.super java/lang/Object
+
+.field public  i1 Z
+.field protected  p1 Z
+.field private  pvt1 Z
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const/4 v0, 1
+       iput-boolean v0, v1, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.i1 Z
+
+       const/16 v0, 1
+       iput-boolean v0, v1, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.p1 Z
+
+       const/16 v0, 1
+       iput-boolean v0, v1, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.pvt1 Z
+       
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.java
new file mode 100644
index 0000000..b23b780
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_1 {
+    public boolean i1 = true;
+    protected boolean p1 = true;
+    private boolean pvt1 = true;
+    
+    public boolean run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d
new file mode 100644
index 0000000..540ecc5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_11.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_11
+.super dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.p1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.java
new file mode 100644
index 0000000..2b2423e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_11 extends T_iget_boolean_1 {
+
+    public boolean run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d
new file mode 100644
index 0000000..e0a918f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_12.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_12
+.super dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.pvt1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.java
new file mode 100644
index 0000000..5af996f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_12 extends T_iget_boolean_1 {
+
+    @Override
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d
new file mode 100644
index 0000000..50ad238
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_13.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_13.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.java
new file mode 100644
index 0000000..b652090
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_13 {
+
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d
new file mode 100644
index 0000000..38a56f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_14.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d
new file mode 100644
index 0000000..9b165d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_15.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d
new file mode 100644
index 0000000..8eb7f27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_16.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d
new file mode 100644
index 0000000..499c796
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_17.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d
new file mode 100644
index 0000000..ab97074
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_18.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_18
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d
new file mode 100644
index 0000000..2909f36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_19.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d
new file mode 100644
index 0000000..e37f360
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_20.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d
new file mode 100644
index 0000000..c59f39d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_21.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/TestStubs/<init>()V
+
+       iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.TestStubs.TestStubProtectedField Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.java
new file mode 100644
index 0000000..74e2da1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_21 {
+
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d
new file mode 100644
index 0000000..7b6f6f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_3.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_3
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v3, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_3.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d
new file mode 100644
index 0000000..9f30d4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_30.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_30
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30
+    iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_30.st_i1 Z
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d
new file mode 100644
index 0000000..56747b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_4.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dfh
new file mode 100644
index 0000000..a68f88b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 663a47b7
+    B7 47 3A 66 
+// parsed: offset 12, len 20: signature           : 26ba...8627
+    26 BA 95 8C 7D 61 05 BB C8 CD CB 51 38 D9 12 D7 C7 20 86 27 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "Ljava/lang/Object;"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 377 (0x000179) "T_iget_boolean_4.java"
+    79 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 400 (0x000190) "V"
+    90 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "Z"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "i1"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "run"
+    9A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "Z"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 6 (0x000006) "i1"
+    00 00 03 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_iget_boolean_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 415 (0x00019f)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9F 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-boolean v1, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;.i1:Z // field@0000
+//@mod            55 21 00 00 
+            55 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 69 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 3B 00 
+// parsed: offset 357, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 377, len 23: TYPE_STRING_DATA_ITEM [3] "T_iget_boolean_4.java"
+    15 54 5F 69 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 406, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    // parsed: offset 415, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 416, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 417, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 418, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 419, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 420, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 422, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 425, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 427, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 428, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 429, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 431, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 415 (0x00019f)
+        00 20 00 00 01 00 00 00 9F 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d
new file mode 100644
index 0000000..f9bf929
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_5.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.java
new file mode 100644
index 0000000..5b275aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_5 {
+
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d
new file mode 100644
index 0000000..ae3a118
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_6.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/TestStubs/<init>()V
+
+       iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.TestStubs.TestStubField Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.java
new file mode 100644
index 0000000..0d91cab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_6 {
+
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d
new file mode 100644
index 0000000..cdec059
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_7.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_7no_class.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.java
new file mode 100644
index 0000000..3ec333b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_7 {
+
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d
new file mode 100644
index 0000000..fd4ff0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_8.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_8.i1N Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.java
new file mode 100644
index 0000000..b87cf8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_8 {
+
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d
new file mode 100644
index 0000000..9b2b565
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_9.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_9
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       const v0, 0        
+       iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_9.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.java
new file mode 100644
index 0000000..a5261bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_9 {
+    
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/TestStubs.java
new file mode 100644
index 0000000..90b1f13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte;
+
+public class TestStubs {
+    // used by testVFE4
+    private byte TestStubField = 50;
+    // ussed by testVFE15
+    protected byte TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/Test_iget_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/Test_iget_byte.java
new file mode 100644
index 0000000..de48192
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/Test_iget_byte.java
@@ -0,0 +1,296 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_1;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_11;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_12;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_13;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_21;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_5;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_6;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_7;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_8;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_9;
+
+public class Test_iget_byte extends DxTestCase {
+    
+    /**
+     * @title get byte from field 
+     */
+    public void testN1() {
+        T_iget_byte_1 t = new T_iget_byte_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_1
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_11
+        T_iget_byte_11 t = new T_iget_byte_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_byte_9 t = new T_iget_byte_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }   
+
+    /**
+     * @constraint A11 
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B13 
+     * @title read byte from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_byte_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_6
+        //@uses dot.junit.opcodes.iget_byte.TestStubs
+        try {
+            new T_iget_byte_6().run();
+            fail("expected an IllegalAccessError exception");
+        }  catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_byte_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_byte_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_12
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_1
+        try {
+            new T_iget_byte_12().run();
+            fail("expected an IllegalAccessError exception");
+        }  catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_21
+        //@uses dot.junit.opcodes.iget_byte.TestStubs
+        try {
+            new T_iget_byte_21().run();
+            fail("expected an IllegalAccessError exception");
+        }  catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_5
+        //@uses dot.junit.opcodes.iget_byte.TestStubs        
+        try {
+            new T_iget_byte_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        }  catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d
new file mode 100644
index 0000000..6dbe256
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_1.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_1
+.super java/lang/Object
+
+.field public  i1 B
+.field protected  p1 B
+.field private  pvt1 B
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 77
+       iput-byte v0, v1, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.i1 B
+
+       const v0, 77
+       iput-byte v0, v1, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.p1 B
+
+       const v0, 77
+       iput-byte v0, v1, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.pvt1 B
+       
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.java
new file mode 100644
index 0000000..32df19e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_1 {
+    public static byte i1 = 77;
+    protected static byte p1 = 77;
+    private static byte pvt1 = 77;
+    
+    public byte run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d
new file mode 100644
index 0000000..0a13a63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_11.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_11
+.super dot/junit/opcodes/iget_byte/d/T_iget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/d/T_iget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.p1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.java
new file mode 100644
index 0000000..535c971
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_11 extends T_iget_byte_1 {
+
+    public byte run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d
new file mode 100644
index 0000000..19d218b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_12.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_12
+.super dot/junit/opcodes/iget_byte/d/T_iget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/d/T_iget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.pvt1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.java
new file mode 100644
index 0000000..3927a5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_12  extends T_iget_byte_1 {
+
+    @Override
+    public byte run() {
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d
new file mode 100644
index 0000000..f09be61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_13.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_13.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.java
new file mode 100644
index 0000000..755b896
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_13  {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d
new file mode 100644
index 0000000..f33ce5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_14.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d
new file mode 100644
index 0000000..4564d6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_15.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d
new file mode 100644
index 0000000..0cd45ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_16.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d
new file mode 100644
index 0000000..fba56a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_17.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d
new file mode 100644
index 0000000..309001d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_18.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d
new file mode 100644
index 0000000..a1397ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_19.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d
new file mode 100644
index 0000000..2373e00
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_20.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d
new file mode 100644
index 0000000..40685ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_21.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/TestStubs/<init>()V
+
+       iget-byte v1, v0, dot.junit.opcodes.iget_byte.TestStubs.TestStubProtectedField B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.java
new file mode 100644
index 0000000..10deb39
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_21 {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d
new file mode 100644
index 0000000..a7cf811
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_3.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_3
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v3, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_3.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d
new file mode 100644
index 0000000..1c8e463
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_30.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_30
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_byte/d/T_iget_byte_30
+    iget-byte v1, v0, dot.junit.opcodes.iget_byte.d.T_iget_byte_30.st_i1 B
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d
new file mode 100644
index 0000000..20f03c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_4.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_4
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_4.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dfh
new file mode 100644
index 0000000..26864a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : acfa42dd
+    DD 42 FA AC 
+// parsed: offset 12, len 20: signature           : 3689...2216
+    36 89 53 31 46 F7 82 E5 1D 14 90 9F A4 DE 9A 22 E0 BC 22 16 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "B"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_byte_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "B"
+//     return_type_idx: 0 (0x000000) "B"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_byte_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_byte.d.T_iget_byte_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_byte.d.T_iget_byte_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-byte v1, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;.i1:B // field@0000
+//@mod            56 21 00 00 
+            56 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 62 79 74 65 2F 64 2F 54 5F 69 67 65 74 5F 62 79 74 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_iget_byte_4.java"
+    12 54 5F 69 67 65 74 5F 62 79 74 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    // parsed: offset 406, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d
new file mode 100644
index 0000000..65e6ed0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_5.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_5
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_5.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.java
new file mode 100644
index 0000000..75f7a5c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_5 {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d
new file mode 100644
index 0000000..0f761e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_6.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/TestStubs/<init>()V
+
+       iget-byte v1, v0, dot.junit.opcodes.iget_byte.TestStubs.TestStubField B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.java
new file mode 100644
index 0000000..20af80f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_6  {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d
new file mode 100644
index 0000000..a9df70b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_7.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_7no_class.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.java
new file mode 100644
index 0000000..f13071d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_7  {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d
new file mode 100644
index 0000000..de3b7a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_8.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_8.i1N B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.java
new file mode 100644
index 0000000..6f89bf3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_8  {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d
new file mode 100644
index 0000000..96eee86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_9.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_9
+.super java/lang/Object
+
+.field public i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       const v0, 0
+       iget-byte v1, v0, dot.junit.opcodes.iget_byte.d.T_iget_byte_9.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.java
new file mode 100644
index 0000000..476ae5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_9 {
+    
+    public byte run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/TestStubs.java
new file mode 100644
index 0000000..5bf73ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char;
+
+public class TestStubs {
+    // used by testVFE4
+    private char TestStubField = 50;
+    // ussed by testVFE15
+    protected char TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/Test_iget_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/Test_iget_char.java
new file mode 100644
index 0000000..c7516e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/Test_iget_char.java
@@ -0,0 +1,304 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_char.d.T_iget_char_1;
+import dot.junit.opcodes.iget_char.d.T_iget_char_11;
+import dot.junit.opcodes.iget_char.d.T_iget_char_12;
+import dot.junit.opcodes.iget_char.d.T_iget_char_13;
+import dot.junit.opcodes.iget_char.d.T_iget_char_21;
+import dot.junit.opcodes.iget_char.d.T_iget_char_5;
+import dot.junit.opcodes.iget_char.d.T_iget_char_6;
+import dot.junit.opcodes.iget_char.d.T_iget_char_7;
+import dot.junit.opcodes.iget_char.d.T_iget_char_8;
+import dot.junit.opcodes.iget_char.d.T_iget_char_9;
+
+public class Test_iget_char extends DxTestCase {
+    
+    /**
+     * @title get char from field 
+     */
+    public void testN1() {
+        T_iget_char_1 t = new T_iget_char_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_1
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_11
+        T_iget_char_11 t = new T_iget_char_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_char_9 t = new T_iget_char_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+   
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read char from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_char_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError t) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_6
+        //@uses dot.junit.opcodes.iget_char.TestStubs
+        try {
+            new T_iget_char_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError t) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_char_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError t) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_char_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError t) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_12
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_1
+        try {
+            new T_iget_char_12().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError t) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_char shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * @constraint B1 
+     * @title iget_char shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * @constraint B1 
+     * @title iget_char shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_21
+        //@uses dot.junit.opcodes.iget_char.TestStubs
+        try {
+            new T_iget_char_21().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError t) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_5
+        //@uses dot.junit.opcodes.iget_char.TestStubs
+        try {
+            new T_iget_char_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError t) {
+            // expected
+        }
+    }
+    
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d
new file mode 100644
index 0000000..837dd6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_1.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_1
+.super java/lang/Object
+
+.field public  i1 C
+.field protected  p1 C
+.field private  pvt1 C
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 77
+       iput-char v0, v1, dot.junit.opcodes.iget_char.d.T_iget_char_1.i1 C
+
+       const v0, 77
+       iput-char v0, v1, dot.junit.opcodes.iget_char.d.T_iget_char_1.p1 C
+
+       const v0, 77
+       iput-char v0, v1, dot.junit.opcodes.iget_char.d.T_iget_char_1.pvt1 C
+       
+       
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_1.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.java
new file mode 100644
index 0000000..227f97a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_1 {
+    public  char i1 = 77;
+    protected  char p1 = 77;
+    private  char pvt1 = 77;
+    
+    public char run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d
new file mode 100644
index 0000000..9d74992
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_11.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_11
+.super dot/junit/opcodes/iget_char/d/T_iget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/d/T_iget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_1.p1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.java
new file mode 100644
index 0000000..cdd08a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_11 extends T_iget_char_1 {
+
+    public char run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d
new file mode 100644
index 0000000..5194ff9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_12.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_12
+.super dot/junit/opcodes/iget_char/d/T_iget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/d/T_iget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_1.pvt1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.java
new file mode 100644
index 0000000..611b24b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_12 extends T_iget_char_1 {
+
+    @Override
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d
new file mode 100644
index 0000000..a7f5e58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_13.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_13.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.java
new file mode 100644
index 0000000..33cae33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d
new file mode 100644
index 0000000..46f0e20
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_14.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d
new file mode 100644
index 0000000..e8c7195
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_15.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d
new file mode 100644
index 0000000..34dbaf0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_16.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d
new file mode 100644
index 0000000..cde1b06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_17.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_17
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d
new file mode 100644
index 0000000..f32f364
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_18.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d
new file mode 100644
index 0000000..5efa5ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_19.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d
new file mode 100644
index 0000000..895f42e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_20.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d
new file mode 100644
index 0000000..4902259
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_21.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/TestStubs/<init>()V
+
+       iget-char v1, v0, dot.junit.opcodes.iget_char.TestStubs.TestStubProtectedField C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.java
new file mode 100644
index 0000000..6517824
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_21 {
+
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d
new file mode 100644
index 0000000..7838f58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_3.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_3
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v3, v2, dot.junit.opcodes.iget_char.d.T_iget_char_3.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d
new file mode 100644
index 0000000..bdc90d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_30.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_30
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_char/d/T_iget_char_30
+    iget-char v1, v0, dot.junit.opcodes.iget_char.d.T_iget_char_30.st_i1 C
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d
new file mode 100644
index 0000000..428c14b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_4.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_4
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_4.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.dfh
new file mode 100644
index 0000000..270fbc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_char/d/T_iget_char_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_char/d/T_iget_char_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 583643f9
+    F9 43 36 58 
+// parsed: offset 12, len 20: signature           : c593...65f6
+    C5 93 2D 56 9E A8 DE 9C EB 9B 10 08 C0 63 49 6A B5 96 65 F6 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "C"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_char_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "C"
+//     return_type_idx: 0 (0x000000) "C"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_char_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_char.d.T_iget_char_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_char.d.T_iget_char_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-char v1, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_4;.i1:C // field@0000
+//@mod            57 21 00 00 
+            57 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 63 68 61 72 2F 64 2F 54 5F 69 67 65 74 5F 63 68 61 72 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_iget_char_4.java"
+    12 54 5F 69 67 65 74 5F 63 68 61 72 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    // parsed: offset 406, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d
new file mode 100644
index 0000000..534412f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_5.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_5
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_5.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.java
new file mode 100644
index 0000000..4975e76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_5 {
+
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d
new file mode 100644
index 0000000..0d208b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_6.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/TestStubs/<init>()V
+
+       iget-char v1, v0, dot.junit.opcodes.iget_char.TestStubs.TestStubField C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.java
new file mode 100644
index 0000000..8be8c2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_6 {
+
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d
new file mode 100644
index 0000000..b2ca2ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_7.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_7no_class.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.java
new file mode 100644
index 0000000..4ca80d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_7 {
+
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d
new file mode 100644
index 0000000..7a75de0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_8.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_8.i1N C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.java
new file mode 100644
index 0000000..49d35c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_8 {
+
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d
new file mode 100644
index 0000000..70eca20
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_9.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_9
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       const v0, 0    
+       iget-char v1, v0, dot.junit.opcodes.iget_char.d.T_iget_char_9.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.java
new file mode 100644
index 0000000..6bbe1ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_9 {
+    
+    public char run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/TestStubs.java
new file mode 100644
index 0000000..0a68e56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object;
+
+public class TestStubs {
+    // used by testVFE4
+    private Object TestStubField = null;
+    // used by testVFE15
+    protected Object TestStubProtectedField = null;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/Test_iget_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/Test_iget_object.java
new file mode 100644
index 0000000..3a735b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/Test_iget_object.java
@@ -0,0 +1,318 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_object.d.T_iget_object_1;
+import dot.junit.opcodes.iget_object.d.T_iget_object_11;
+import dot.junit.opcodes.iget_object.d.T_iget_object_12;
+import dot.junit.opcodes.iget_object.d.T_iget_object_13;
+import dot.junit.opcodes.iget_object.d.T_iget_object_21;
+import dot.junit.opcodes.iget_object.d.T_iget_object_22;
+import dot.junit.opcodes.iget_object.d.T_iget_object_5;
+import dot.junit.opcodes.iget_object.d.T_iget_object_6;
+import dot.junit.opcodes.iget_object.d.T_iget_object_7;
+import dot.junit.opcodes.iget_object.d.T_iget_object_8;
+import dot.junit.opcodes.iget_object.d.T_iget_object_9;
+
+public class Test_iget_object extends DxTestCase {
+    
+    /**
+     * @title get reference from field 
+     */
+    public void testN1() {
+        T_iget_object_1 t = new T_iget_object_1();
+        assertEquals(null, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_1
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_11
+        T_iget_object_11 t = new T_iget_object_11();
+        assertEquals(null, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_object_9 t = new T_iget_object_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }  
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title  (read object from long field - only field with same name but 
+     * different type exists)
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_object_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_6
+        //@uses dot.junit.opcodes.iget_object.TestStubs
+        try {
+            new T_iget_object_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_object_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_object_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_12
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_1
+        try {
+            new T_iget_object_12().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_object shall not work for short fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title  only field of different type exists
+     */
+    public void testVFE15() {
+        try {
+            new T_iget_object_21().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_22
+        //@uses dot.junit.opcodes.iget_object.TestStubs
+        try {
+            new T_iget_object_22().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static field.
+     */
+    public void testVFE17() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_5
+        //@uses dot.junit.opcodes.iget_object.TestStubs
+        try {
+            new T_iget_object_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d
new file mode 100644
index 0000000..5e4967f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_1.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_1
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+.field protected  p1 Ljava/lang/Object;
+.field private  pvt1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 0
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_1.i1 Ljava/lang/Object;
+
+       const v0, 0
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_1.p1 Ljava/lang/Object;
+
+       const v0, 0
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_1.pvt1 Ljava/lang/Object;
+       
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_1.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.java
new file mode 100644
index 0000000..a063f8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_1 {
+    public  Object i1 = null;
+    protected  Object p1 = null;
+    private  Object pvt1 = null;
+    
+    public Object run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d
new file mode 100644
index 0000000..35a2de0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_11.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_11
+.super dot/junit/opcodes/iget_object/d/T_iget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/d/T_iget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_1.p1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.java
new file mode 100644
index 0000000..5fdf44a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_11 extends T_iget_object_1 {
+
+    public Object run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d
new file mode 100644
index 0000000..b2d7400
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_12.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_12
+.super dot/junit/opcodes/iget_object/d/T_iget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/d/T_iget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_1.pvt1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.java
new file mode 100644
index 0000000..f98c36a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_12  extends T_iget_object_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d
new file mode 100644
index 0000000..21414cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_13.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_13.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.java
new file mode 100644
index 0000000..85a8761
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_13  {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d
new file mode 100644
index 0000000..df2581c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_14.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_14
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_14.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d
new file mode 100644
index 0000000..313ec7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_15.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_15
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d
new file mode 100644
index 0000000..d9df4aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_16.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d
new file mode 100644
index 0000000..82cb90e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_17.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_17
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d
new file mode 100644
index 0000000..3dac91f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_18.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d
new file mode 100644
index 0000000..19a9277
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_19.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d
new file mode 100644
index 0000000..71751fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_20.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d
new file mode 100644
index 0000000..10143a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_21.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_21
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       new-instance v0, java/lang/Object
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_21.i1 Ljava/lang/Object;
+       
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_21.i1 Ljava/lang/String;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.java
new file mode 100644
index 0000000..e301893
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_21  {
+
+    public String run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d
new file mode 100644
index 0000000..2858934
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_22.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_22
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/TestStubs/<init>()V
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.TestStubs.TestStubProtectedField Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.java
new file mode 100644
index 0000000..d9ad933
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_22  {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d
new file mode 100644
index 0000000..4999f1a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_3.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_3
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v3, v2, dot.junit.opcodes.iget_object.d.T_iget_object_3.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d
new file mode 100644
index 0000000..621f235
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_30.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_30
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_object/d/T_iget_object_30
+    iget-object v1, v0, dot.junit.opcodes.iget_object.d.T_iget_object_30.st_i1 Ljava/lang/Object;
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d
new file mode 100644
index 0000000..9a05156
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_4.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_4
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_4.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.dfh
new file mode 100644
index 0000000..a031623
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_object/d/T_iget_object_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_object/d/T_iget_object_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 70da44ea
+    EA 44 DA 70 
+// parsed: offset 12, len 20: signature           : 6c85...f80f
+    6C 85 8D 3C F4 BD 5A AF 3C BC 06 C0 24 6F AA 65 52 1A F8 0F 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_object_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "i1"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "run"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 156, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 1 (0x000001) "Ljava/lang/Object;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 00 00 00 00 
+// parsed: offset 168, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_object_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 408 (0x000198)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 98 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_object.d.T_iget_object_4.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_object.d.T_iget_object_4.run"
+    // parsed: offset 268, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: iget-object v1, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_4;.i1:Ljava/lang/Object; // field@0000
+//@mod            54 21 00 00 
+            54 21 00 01 
+        // parsed: offset 288, len 2: |0002: return-object v1
+            11 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 51: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 69 67 65 74 5F 6F 62 6A 65 63 74 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 22: TYPE_STRING_DATA_ITEM [4] "T_iget_object_4.java"
+    14 54 5F 69 67 65 74 5F 6F 62 6A 65 63 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 403, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    // parsed: offset 408, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 409, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 410, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 411, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 412, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 413, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 144 (0x000090)
+        02 00 00 00 03 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 156 (0x00009c)
+        03 00 00 00 02 00 00 00 9C 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 180 (0x0000b4)
+        04 00 00 00 01 00 00 00 B4 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 20 00 00 01 00 00 00 98 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d
new file mode 100644
index 0000000..ed15e90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_5.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_5
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_5.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.java
new file mode 100644
index 0000000..3626499
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_5  {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d
new file mode 100644
index 0000000..e9082e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_6.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/TestStubs/<init>()V
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.java
new file mode 100644
index 0000000..a4ba515
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_6  {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d
new file mode 100644
index 0000000..db5f6f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_7.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_7no_class.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.java
new file mode 100644
index 0000000..2940ca4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_7  {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d
new file mode 100644
index 0000000..67f7b82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_8.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_8.i1N Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.java
new file mode 100644
index 0000000..3b5c4d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_8  {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d
new file mode 100644
index 0000000..7899b37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_9.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_9
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const v0, 0
+       iget-object v1, v0, dot.junit.opcodes.iget_object.d.T_iget_object_9.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.java
new file mode 100644
index 0000000..7ff752e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_9 {
+    
+    public Object run(){
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/TestStubs.java
new file mode 100644
index 0000000..8580ec3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short;
+
+public class TestStubs {
+    // used by testVFE4
+    private short TestStubField = 50;
+    // used by testVFE15
+    protected short TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/Test_iget_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/Test_iget_short.java
new file mode 100644
index 0000000..a7d3658
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/Test_iget_short.java
@@ -0,0 +1,306 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_short.d.T_iget_short_1;
+import dot.junit.opcodes.iget_short.d.T_iget_short_11;
+import dot.junit.opcodes.iget_short.d.T_iget_short_12;
+import dot.junit.opcodes.iget_short.d.T_iget_short_13;
+import dot.junit.opcodes.iget_short.d.T_iget_short_21;
+import dot.junit.opcodes.iget_short.d.T_iget_short_5;
+import dot.junit.opcodes.iget_short.d.T_iget_short_6;
+import dot.junit.opcodes.iget_short.d.T_iget_short_7;
+import dot.junit.opcodes.iget_short.d.T_iget_short_8;
+import dot.junit.opcodes.iget_short.d.T_iget_short_9;
+
+public class Test_iget_short extends DxTestCase {
+    
+    /**
+     * @title get short from field
+     */
+    public void testN1() {
+        T_iget_short_1 t = new T_iget_short_1();
+        assertEquals(32000, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_1
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_11
+        T_iget_short_11 t = new T_iget_short_11();
+        assertEquals(32000, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_short_9 t = new T_iget_short_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+  
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read short from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_short_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_6
+        //@uses dot.junit.opcodes.iget_short.TestStubs
+        try {
+            new T_iget_short_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_short_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_short_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_12
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_1
+        try {
+            new T_iget_short_12().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_short shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_21
+        //@uses dot.junit.opcodes.iget_short.TestStubs
+        try {
+            new T_iget_short_21().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_5
+        //@uses dot.junit.opcodes.iget_short.TestStubs
+        try {
+            new T_iget_short_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d
new file mode 100644
index 0000000..822f09e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_1.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_1
+.super java/lang/Object
+
+.field public  i1 S
+.field protected  p1 S
+.field private  pvt1 S
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       const v0, 32000
+       iput-short v0, v1, dot.junit.opcodes.iget_short.d.T_iget_short_1.i1 S
+
+       const v0, 32000
+       iput-short v0, v1, dot.junit.opcodes.iget_short.d.T_iget_short_1.p1 S
+
+       const v0, 32000
+       iput-short v0, v1, dot.junit.opcodes.iget_short.d.T_iget_short_1.pvt1 S
+       
+       
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_1.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.java
new file mode 100644
index 0000000..d70b7a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_1 {
+    public  short i1 = 32000;
+    protected  short p1 = 32000;
+    private  short pvt1 = 32000;
+    
+    public short run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d
new file mode 100644
index 0000000..0dfd2f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_11.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_11
+.super dot/junit/opcodes/iget_short/d/T_iget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_short/d/T_iget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_1.p1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.java
new file mode 100644
index 0000000..0fd12c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_11 extends T_iget_short_1 {
+
+    public short run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d
new file mode 100644
index 0000000..e47f6a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_12.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_12
+.super dot/junit/opcodes/iget_short/d/T_iget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_short/d/T_iget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_1.pvt1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.java
new file mode 100644
index 0000000..be322f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_12 extends T_iget_short_1 {
+
+    @Override
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d
new file mode 100644
index 0000000..22a94a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_13.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_13.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.java
new file mode 100644
index 0000000..3b27d6c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_13 {
+
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d
new file mode 100644
index 0000000..9e0367a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_14.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d
new file mode 100644
index 0000000..cf1fbf5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_15.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_15
+.super java/lang/Object
+
+.field public i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d
new file mode 100644
index 0000000..635640a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_16.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d
new file mode 100644
index 0000000..6a717be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_17.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_17
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d
new file mode 100644
index 0000000..70dda5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_18.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d
new file mode 100644
index 0000000..cdaa952
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_19.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d
new file mode 100644
index 0000000..5568f60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_20.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
new file mode 100644
index 0000000..eff1f49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_21.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_short/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_short/TestStubs/<init>()V
+       
+       iget-wide v1, v0, dot.junit.opcodes.iget_short.TestStubs.TestStubProtectedField S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.java
new file mode 100644
index 0000000..5bb7f6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_21 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d
new file mode 100644
index 0000000..0de7441
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_3.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_3
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v3, v2, dot.junit.opcodes.iget_short.d.T_iget_short_3.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d
new file mode 100644
index 0000000..bc8bc9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_30.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_30
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_short/d/T_iget_short_30
+    iget-short v1, v0, dot.junit.opcodes.iget_short.d.T_iget_short_30.st_i1 S
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d
new file mode 100644
index 0000000..9e2ffb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_4.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_4
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_4.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.dfh
new file mode 100644
index 0000000..3716e2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_short/d/T_iget_short_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_short/d/T_iget_short_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 636b4534
+    34 45 6B 63 
+// parsed: offset 12, len 20: signature           : 7e12...b877
+    7E 12 BB A2 6A C1 65 67 56 AC 7C 83 C7 BA 11 D9 23 22 B8 77 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "Ljava/lang/Object;"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "S"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 376 (0x000178) "T_iget_short_4.java"
+    78 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "i1"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 404 (0x000194) "run"
+    94 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "S"
+//     return_type_idx: 2 (0x000002) "S"
+//     parameters_off: 0 (0x000000)
+    03 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 6 (0x000006) "i1"
+    00 00 02 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_short_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 409 (0x000199)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 99 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_short.d.T_iget_short_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_short.d.T_iget_short_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-short v1, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_4;.i1:S // field@0000
+//@mod            58 21 00 00 
+            58 21 00 01
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 69 67 65 74 5F 73 68 6F 72 74 5F 34 3B 00 
+// parsed: offset 353, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 373, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 376, len 21: TYPE_STRING_DATA_ITEM [4] "T_iget_short_4.java"
+    13 54 5F 69 67 65 74 5F 73 68 6F 72 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 404, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    // parsed: offset 409, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 410, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 411, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 412, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 413, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 416, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 419, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 422, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 423, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 425, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 409 (0x000199)
+        00 20 00 00 01 00 00 00 99 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d
new file mode 100644
index 0000000..ac92c40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_5.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_5
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_5.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.java
new file mode 100644
index 0000000..37c4351
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_5 {
+
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d
new file mode 100644
index 0000000..764d42e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_6.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.TestStubs.TestStubField S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.java
new file mode 100644
index 0000000..5ac127b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_6 {
+
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d
new file mode 100644
index 0000000..3a042d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_7.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_7no_class.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.java
new file mode 100644
index 0000000..7c81be5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_7 {
+
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d
new file mode 100644
index 0000000..129d2e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_8.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_8.i1N S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.java
new file mode 100644
index 0000000..f22a81e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_8 {
+
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d
new file mode 100644
index 0000000..8721333
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_9.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_9
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       const v0, 0
+       iget-short v1, v0, dot.junit.opcodes.iget_short.d.T_iget_short_9.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.java
new file mode 100644
index 0000000..178efc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_9 {
+    
+    public short run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/TestStubs.java
new file mode 100644
index 0000000..f90a470
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide;
+
+public class TestStubs {
+    // used by testVFE4
+    private long TestStubField = 50;
+    // ussed by testVFE15
+    protected long TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/Test_iget_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/Test_iget_wide.java
new file mode 100644
index 0000000..7e42d32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/Test_iget_wide.java
@@ -0,0 +1,311 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_1;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_11;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_12;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_13;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_2;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_21;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_5;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_6;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_7;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_8;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_9;
+
+public class Test_iget_wide extends DxTestCase {
+    
+    /**
+     * @title type - long
+     */
+    public void testN1() {
+        T_iget_wide_1 t = new T_iget_wide_1();
+        assertEquals(12345679890123l, t.run());
+    }
+
+    /**
+     * @title type - double
+     */
+    public void testN2() {
+        T_iget_wide_2 t = new T_iget_wide_2();
+        assertEquals(123.0, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_1
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_11
+        T_iget_wide_11 t = new T_iget_wide_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_wide_9 t = new T_iget_wide_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }   
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read long from integer field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_wide_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_6
+        //@uses dot.junit.opcodes.iget_wide.TestStubs
+        try {
+            new T_iget_wide_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. 
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_wide_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_wide_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_12
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_1
+        try {
+            new T_iget_wide_12().run();
+            fail("expected a IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget-wide shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for float fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for int fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_21
+        //@uses dot.junit.opcodes.iget_wide.TestStubs
+        try {
+            new T_iget_wide_21().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_5
+        //@uses dot.junit.opcodes.iget_wide.TestStubs
+        try {
+            new T_iget_wide_5().run();
+            fail("expected a IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d
new file mode 100644
index 0000000..3919e04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_1.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_1
+.super java/lang/Object
+
+.field public  i1 J
+.field protected  p1 J
+.field private  pvt1 J
+
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-direct {v2}, java/lang/Object/<init>()V
+       
+       const-wide v0, 12345679890123
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.i1 J
+
+       const-wide v0, 10
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.p1 J
+
+       const-wide v0, 20
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.pvt1 J
+       
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.java
new file mode 100644
index 0000000..309671d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_1 {
+    public  long i1 = 12345679890123l;
+    protected  long p1 = 10;
+    private  long pvt1 = 20;
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d
new file mode 100644
index 0000000..9a6f454
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_11.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_11
+.super dot/junit/opcodes/iget_wide/d/T_iget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/d/T_iget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.p1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.java
new file mode 100644
index 0000000..c93589e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_11 extends T_iget_wide_1 {
+
+    public long run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d
new file mode 100644
index 0000000..9a2cc44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_12.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_12
+.super dot/junit/opcodes/iget_wide/d/T_iget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/d/T_iget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.pvt1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.java
new file mode 100644
index 0000000..af3cbda
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_12 extends T_iget_wide_1 {
+
+    @Override
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d
new file mode 100644
index 0000000..63affb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_13.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_13
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_13.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.java
new file mode 100644
index 0000000..98086a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d
new file mode 100644
index 0000000..3ffdc18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_14.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d
new file mode 100644
index 0000000..5b7424b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_15.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d
new file mode 100644
index 0000000..ce37389
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_16.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_16
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d
new file mode 100644
index 0000000..1181a48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_17.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d
new file mode 100644
index 0000000..03c2a0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_18.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_18
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d
new file mode 100644
index 0000000..1978e12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_19.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_19
+.super java/lang/Object
+
+.field public  i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_19.i1 F
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d
new file mode 100644
index 0000000..16f9f5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_2.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_2
+.super java/lang/Object
+
+.field public  val D
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-direct {v2}, java/lang/Object/<init>()V
+       
+       const-wide v0, 123.0
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_2.val D
+       
+       return-void
+.end method
+
+.method public run()D
+.limit regs 4
+
+       iget-wide v1, v3, dot.junit.opcodes.iget_wide.d.T_iget_wide_2.val D
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.java
new file mode 100644
index 0000000..726f4b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_2 {
+
+    public  double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d
new file mode 100644
index 0000000..1f3e225
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_20.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_20
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_20.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d
new file mode 100644
index 0000000..fea700d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_21.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       
+       new-instance v0, Ldot/junit/opcodes/iget_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/TestStubs/<init>()V
+       
+       iget-wide v1, v0, dot.junit.opcodes.iget_wide.TestStubs.TestStubProtectedField J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.java
new file mode 100644
index 0000000..affeadf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_21 {
+
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d
new file mode 100644
index 0000000..bb7026e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_3.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_3
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v3, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_3.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d
new file mode 100644
index 0000000..432f376
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_30.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_30
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_wide/d/T_iget_wide_30
+    iget-wide v1, v0, dot.junit.opcodes.iget_wide.d.T_iget_wide_30.st_i1 J
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d
new file mode 100644
index 0000000..8dd2d4e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_4.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_4
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_4.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dfh
new file mode 100644
index 0000000..489efd2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 1ffd428b
+    8B 42 FD 1F 
+// parsed: offset 12, len 20: signature           : 2608...94cb
+    26 08 93 C5 49 69 AF 88 0D C9 EC 21 52 81 36 4E CA 50 94 CB 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "J"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_wide_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "J"
+//     return_type_idx: 0 (0x000000) "J"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_wide_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_wide.d.T_iget_wide_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_wide.d.T_iget_wide_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-wide v1, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;.i1:J // field@0000
+//@mod            53 21 00 00 
+            53 21 00 01
+        // parsed: offset 292, len 2: |0002: return-wide v1
+            10 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 77 69 64 65 2F 64 2F 54 5F 69 67 65 74 5F 77 69 64 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_iget_wide_4.java"
+    12 54 5F 69 67 65 74 5F 77 69 64 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    // parsed: offset 406, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d
new file mode 100644
index 0000000..cab5c10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_5.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_5
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_5.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.java
new file mode 100644
index 0000000..c4c130e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_5 {
+
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d
new file mode 100644
index 0000000..ba13f26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_6.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       
+       new-instance v0, Ldot/junit/opcodes/iget_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/TestStubs/<init>()V
+       
+       iget-wide v1, v0, dot.junit.opcodes.iget_wide.TestStubs.TestStubField J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.java
new file mode 100644
index 0000000..649795f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_6 {
+
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d
new file mode 100644
index 0000000..572fdbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_7.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_7no_class.i1 J
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.java
new file mode 100644
index 0000000..0866645
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_7 {
+
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d
new file mode 100644
index 0000000..96b8c56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_8.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_8.i1N J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.java
new file mode 100644
index 0000000..570764d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_8 {
+
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d
new file mode 100644
index 0000000..3cb12cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_9.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_9
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       const v0, 0
+       iget-wide v1, v0, dot.junit.opcodes.iget_wide.d.T_iget_wide_9.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.java
new file mode 100644
index 0000000..6999d93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_9 {
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/TestStubs.java
new file mode 100644
index 0000000..9867d92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/TestStubs.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of;
+
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/Test_instance_of.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/Test_instance_of.java
new file mode 100644
index 0000000..b0a6cc6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/Test_instance_of.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.instance_of.d.T_instance_of_1;
+import dot.junit.opcodes.instance_of.d.T_instance_of_2;
+import dot.junit.opcodes.instance_of.d.T_instance_of_3;
+import dot.junit.opcodes.instance_of.d.T_instance_of_7;
+
+public class Test_instance_of extends DxTestCase {
+
+
+    /**
+     * @title (Object)String instanceof String
+     */
+    public void testN1() {
+        T_instance_of_1 t = new T_instance_of_1();
+        String s = "";
+        assertTrue(t.run(s));
+    }
+
+    /**
+     * @title null instanceof String
+     */
+    public void testN2() {
+        T_instance_of_1 t = new T_instance_of_1();
+        assertFalse(t.run(null));
+    }
+
+    /**
+     * @title check assignment compatibility rules
+     */
+    public void testN4() {
+        T_instance_of_2 t = new T_instance_of_2();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title T_instance_of_1 instanceof String
+     */
+    public void testE1() {
+        T_instance_of_1 t = new T_instance_of_1();
+        assertFalse(t.run(t));
+    }
+
+    /**
+     * @title Attempt to access inaccessible class.
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.instance_of.TestStubs
+        //@uses dot.junit.opcodes.instance_of.d.T_instance_of_3
+        try {
+            T_instance_of_3 tt = new T_instance_of_3();
+            tt.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+        }
+    }
+
+    /**
+     * @title Attempt to access undefined class.
+     */
+    public void testE3() {
+        try {
+            T_instance_of_7 tt = new T_instance_of_7();
+            tt.run();
+            fail("expected a verification exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch(VerifyError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A19
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d
new file mode 100644
index 0000000..4741d35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_1.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+.limit regs 5
+
+       instance-of v0, v4, java/lang/String
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.java
new file mode 100644
index 0000000..bd9118a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_1 {
+
+    public boolean run(Object o) {
+        return o instanceof String; 
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d
new file mode 100644
index 0000000..1299b54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d
@@ -0,0 +1,119 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestStubs.java
+.interface public dot.junit.opcodes.instance_of.d.T_instance_of_2.SuperInterface
+
+.source TestStubs.java    
+.interface public dot.junit.opcodes.instance_of.d.T_instance_of_2.SuperInterface2
+
+.source TestStubs.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_2.SuperClass 
+.super java/lang/Object
+.implements dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface
+    
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method    
+
+.source TestStubs.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_2.SubClass 
+.super dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass/<init>()V
+       return-void
+.end method
+
+
+.source T_instance_of_2.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 20
+
+    const v0, 0
+    
+; (SubClass instanceof SuperClass)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass/<init>()V
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass
+    if-eqz v15, LabelExit
+    
+; (SubClass[] instanceof SuperClass[])    
+    const v11, 1
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;
+    if-eqz v15, LabelExit
+
+; (SubClass[] instanceof Object)    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, java/lang/Object
+    if-eqz v15, LabelExit
+    
+; (SubClass instanceof SuperInterface)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass/<init>()V    
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface
+    if-eqz v15, LabelExit
+
+; !(SuperClass instanceof SubClass)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass/<init>()V
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    if-nez v15, LabelExit
+        
+; !(SubClass instanceof SuperInterface2)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass/<init>()V    
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface2
+    if-nez v15, LabelExit
+
+; !(SubClass[] instanceof SuperInterface)    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface
+    if-nez v15, LabelExit
+
+; !(SubClass[] instanceof SubClass)    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    if-nez v15, LabelExit
+    
+; !(SuperClass[] instanceof SubClass[])    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;
+    instance-of v15, v10, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    if-nez v15, LabelExit
+    
+    const v0, 1
+    
+LabelExit:        
+    return v0
+    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.java
new file mode 100644
index 0000000..e7f1940
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_2 {
+
+    public boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d
new file mode 100644
index 0000000..6705dcf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_3.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+       instance-of v0, v5, dot/junit/opcodes/instance_of/TestStubs
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.java
new file mode 100644
index 0000000..65a0165
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_3 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d
new file mode 100644
index 0000000..fe8b891
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_4.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       instance-of v0, v4, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.dfh
new file mode 100644
index 0000000..cec381b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.dfh
@@ -0,0 +1,264 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/instance_of/d/T_instance_of_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/instance_of/d/T_instance_of_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 66154a36
+    36 4A 15 66 
+// parsed: offset 12, len 20: signature           : 2821...ff3e
+    28 21 65 D6 F8 0F AB 2B 99 4B 13 E4 29 66 87 41 09 61 FF 3E 
+// parsed: offset 32, len 4: file_size           : 580
+    44 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 444 (0x0001bc)
+    BC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 340
+    54 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "Ljava/lang/Object;"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "Ljava/lang/String;"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 393 (0x000189) "T_instance_of_4.java"
+    89 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 415 (0x00019f) "V"
+    9F 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 418 (0x0001a2) "VL"
+    A2 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 422 (0x0001a6) "run"
+    A6 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/String;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "VL"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 288 (0x000120)
+    06 00 00 00 03 00 00 00 20 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_instance_of_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 427 (0x0001ab)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 AB 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.instance_of.d.T_instance_of_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.instance_of.d.T_instance_of_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: instance-of v0, v4, Ljava/lang/String; // class@0002
+//@mod             20 40 02 00         
+            20 40 02 01 
+        // parsed: offset 284, len 2: |0002: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 51: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 73 74 61 6E 63 65 5F 6F 66 2F 64 2F 54 5F 69 6E 73 74 61 6E 63 65 5F 6F 66 5F 34 3B 00 
+// parsed: offset 353, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 373, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 393, len 22: TYPE_STRING_DATA_ITEM [4] "T_instance_of_4.java"
+    14 54 5F 69 6E 73 74 61 6E 63 65 5F 6F 66 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 415, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 418, len 4: TYPE_STRING_DATA_ITEM [6] "VL"
+    02 56 4C 00 
+// parsed: offset 422, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    // parsed: offset 427, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 428, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 429, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 430, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 431, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 432, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 435, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 437, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 438, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 439, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 441, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 444, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 448, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 460, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 472, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 484, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 496, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 508, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 520, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 532, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 544, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 556, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 427 (0x0001ab)
+        00 20 00 00 01 00 00 00 AB 01 00 00 
+    // parsed: offset 568, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 444 (0x0001bc)
+        00 10 00 00 01 00 00 00 BC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d
new file mode 100644
index 0000000..eac21b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_5.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const v3, 1234
+       instance-of v1, v3, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d
new file mode 100644
index 0000000..4c2e649
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_6.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       instance-of v0, v5, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d
new file mode 100644
index 0000000..f0823e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_7.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       instance-of v0, v5, dot/junit/opcodes/instance_of/Test_instance_ofN
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.java
new file mode 100644
index 0000000..adcd6f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d
new file mode 100644
index 0000000..2853ade
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_8.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const-wide v0, 1234
+       check-cast v0, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/Test_int_to_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/Test_int_to_byte.java
new file mode 100644
index 0000000..55e07fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/Test_int_to_byte.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_byte.d.T_int_to_byte_1;
+import dot.junit.opcodes.int_to_byte.d.T_int_to_byte_5;
+
+
+public class Test_int_to_byte extends DxTestCase {
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-1, t.run(-1));
+    }
+
+    /**
+     * @title Argument = 16
+     */
+    public void testN3() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(16, t.run(16));
+    }
+
+    /**
+     * @title Argument = -32
+     */
+    public void testN4() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-32, t.run(-32));
+    }
+
+    /**
+     * @title Argument = 134
+     */
+    public void testN5() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-122, t.run(134));
+    }
+
+    
+    /**
+     * @title Argument = -134
+     */
+    public void testN6() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(122, t.run(-134));
+    }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to byte makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_int_to_byte_5 t = new T_int_to_byte_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Argument = 127
+     */
+    public void testB1() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(127, t.run(127));
+    }
+
+    /**
+     * @title Argument = 128
+     */
+    public void testB2() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-128, t.run(128));
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Argument = -128
+     */
+    public void testB4() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-128, t.run(-128));
+    }
+
+    /**
+     * @title Argument = -129
+     */
+    public void testB5() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(127, t.run(-129));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB6() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB7() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d
new file mode 100644
index 0000000..bfbd201
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_1.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       int-to-byte v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.java
new file mode 100644
index 0000000..1397f49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_byte.d;
+
+public class T_int_to_byte_1 {
+
+    public byte run(int a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d
new file mode 100644
index 0000000..6d18c51
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_2.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-byte v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d
new file mode 100644
index 0000000..6136a49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_3.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-byte v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d
new file mode 100644
index 0000000..5049465
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_4.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       int-to-byte v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d
new file mode 100644
index 0000000..78fa37c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_5.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)B
+.limit regs 5
+
+       int-to-byte v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.java
new file mode 100644
index 0000000..7580b7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_byte.d;
+
+public class T_int_to_byte_5 {
+
+    public byte run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d
new file mode 100644
index 0000000..66b3071
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_6.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       int-to-byte v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/Test_int_to_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/Test_int_to_char.java
new file mode 100644
index 0000000..b426473
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/Test_int_to_char.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_char.d.T_int_to_char_1;
+import dot.junit.opcodes.int_to_char.d.T_int_to_char_5;
+
+
+public class Test_int_to_char extends DxTestCase {
+    /**
+     * @title Argument = 65
+     */
+    public void testN1() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('A', t.run(65));
+    }
+
+    /**
+     * @title Argument = 65537
+     */
+    public void testN2() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0001', t.run(65537));
+    }
+
+    /**
+     * @title Argument = -2
+     */
+    public void testN3() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\ufffe', t.run(-2));
+    }
+
+    /**
+     * @title Argument = 0x110000
+     */
+    public void testN4() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0000', t.run(0x110000));
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to char makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_int_to_char_5 t = new T_int_to_char_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0000', t.run(0));
+    }
+
+    /**
+     * @title Argument = 65535
+     */
+    public void testB2() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\uffff', t.run(65535));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB3() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\uffff', t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0000', t.run(Integer.MIN_VALUE));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d
new file mode 100644
index 0000000..c469970
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_1.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       int-to-char v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.java
new file mode 100644
index 0000000..42ad201
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_char.d;
+
+public class T_int_to_char_1 {
+
+    public char run(int a) {
+        return (char) a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d
new file mode 100644
index 0000000..df98cf1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_2.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-char v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d
new file mode 100644
index 0000000..e67ac88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_3.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-char v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d
new file mode 100644
index 0000000..72477b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_4.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       int-to-char v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d
new file mode 100644
index 0000000..c00482b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_5.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)C
+.limit regs 5
+
+       int-to-char v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.java
new file mode 100644
index 0000000..7ebbc1a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_char.d;
+
+public class T_int_to_char_5 {
+
+    public char run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d
new file mode 100644
index 0000000..91c0397
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_6.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       int-to-char v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/Test_int_to_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/Test_int_to_double.java
new file mode 100644
index 0000000..ae32560
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/Test_int_to_double.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_double.d.T_int_to_double_1;
+import dot.junit.opcodes.int_to_double.d.T_int_to_double_6;
+
+
+public class Test_int_to_double extends DxTestCase {
+    /**
+     * @title Argument = 300000000
+     */
+    public void testN1() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(300000000d, t.run(300000000), 0d);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(1d, t.run(1), 0d);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(-1d, t.run(-1), 0d);
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN8() {
+        T_int_to_double_6 t = new T_int_to_double_6();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(2147483647d, t.run(Integer.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(-2147483648d, t.run(Integer.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(0d, t.run(0), 0d);
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d
new file mode 100644
index 0000000..19a17f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_1.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       int-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.java
new file mode 100644
index 0000000..5277313
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_double.d;
+
+public class T_int_to_double_1 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d
new file mode 100644
index 0000000..adc6bfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_3.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       const-wide v4, 123455    
+
+       int-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d
new file mode 100644
index 0000000..51f6966
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_4.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 1
+
+       const v0, 1234
+       int-to-double v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d
new file mode 100644
index 0000000..9d8382d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_5.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       int-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d
new file mode 100644
index 0000000..529f23e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_6.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       int-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.java
new file mode 100644
index 0000000..213dc7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_double.d;
+
+public class T_int_to_double_6 {
+
+    public double run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d
new file mode 100644
index 0000000..06b12b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_7.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       int-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/Test_int_to_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/Test_int_to_float.java
new file mode 100644
index 0000000..8b6e978
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/Test_int_to_float.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_float.d.T_int_to_float_1;
+import dot.junit.opcodes.int_to_float.d.T_int_to_float_5;
+
+public class Test_int_to_float extends DxTestCase {
+    /**
+     * @title Argument = 123456
+     */
+    public void testN1() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(123456f, t.run(123456), 0f);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(1f, t.run(1), 0f);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(-1f, t.run(-1), 0f);
+    }
+
+    /**
+     * @title Argument = 33564439
+     */
+    public void testN4() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(3.356444E7f, t.run(33564439), 0f);
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to float makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_int_to_float_5 t = new T_int_to_float_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+        
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(0f, t.run(0), 0f);
+    }
+
+    /**
+     * @title Argument = Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(2147483650f, t.run(Integer.MAX_VALUE), 0f);
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(-2147483650f, t.run(Integer.MIN_VALUE), 0f);
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  (type of argument - double)
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d
new file mode 100644
index 0000000..16b6f1a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_1.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       int-to-float v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.java
new file mode 100644
index 0000000..777d81e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_float.d;
+
+public class T_int_to_float_1 {
+
+    public float run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d
new file mode 100644
index 0000000..c2fdf91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_2.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-float v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d
new file mode 100644
index 0000000..4f16417
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_3.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-float v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d
new file mode 100644
index 0000000..e31d685
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_4.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       int-to-float v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d
new file mode 100644
index 0000000..c5bd602
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_5.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       int-to-float v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.java
new file mode 100644
index 0000000..3324016
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_float.d;
+
+public class T_int_to_float_5 {
+
+    public float run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d
new file mode 100644
index 0000000..37db947
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_6.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       int-to-float v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/Test_int_to_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/Test_int_to_long.java
new file mode 100644
index 0000000..3147723
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/Test_int_to_long.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_long.d.T_int_to_long_1;
+import dot.junit.opcodes.int_to_long.d.T_int_to_long_6;
+
+public class Test_int_to_long extends DxTestCase {
+    /**
+     * @title Argument = 123456
+     */
+    public void testN1() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(123456l, t.run(123456));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(1l, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(-1l, t.run(-1));
+    }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN8() {
+        T_int_to_long_6 t = new T_int_to_long_6();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(0l, t.run(0));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(2147483647l, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(-2147483648l, t.run(Integer.MIN_VALUE));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d
new file mode 100644
index 0000000..4f91de2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_1.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       int-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.java
new file mode 100644
index 0000000..03becc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_long.d;
+
+public class T_int_to_long_1 {
+
+    public long run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d
new file mode 100644
index 0000000..eab475b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_2.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       const-wide v4, 3.1415    
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d
new file mode 100644
index 0000000..05527d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_3.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       const-wide v4, 123455    
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d
new file mode 100644
index 0000000..9f26670
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_4.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 1
+
+       const v0, 1234
+       int-to-long v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d
new file mode 100644
index 0000000..f006048
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_5.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d
new file mode 100644
index 0000000..f71a28d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_6.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       int-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.java
new file mode 100644
index 0000000..da307c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_long.d;
+
+public class T_int_to_long_6 {
+
+    public long run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d
new file mode 100644
index 0000000..c2db686
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_7.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       int-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/Test_int_to_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/Test_int_to_short.java
new file mode 100644
index 0000000..7e4c6a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/Test_int_to_short.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_short.d.T_int_to_short_1;
+import dot.junit.opcodes.int_to_short.d.T_int_to_short_5;
+
+public class Test_int_to_short extends DxTestCase {
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-1, t.run(-1));
+    }
+
+    /**
+     * @title Argument = 32767
+     */
+    public void testN3() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(32767, t.run(32767));
+    }
+
+    /**
+     * @title Argument = -32768
+     */
+    public void testN4() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-32768, t.run(-32768));
+    }
+
+    /**
+     * @title Argument = -32769
+     */
+    public void testN5() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(32767, t.run(-32769));
+    }
+
+    /**
+     * @title Argument = 32768
+     */
+    public void testN6() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-32768, t.run(32768));
+    }
+
+    /**
+     * @title Argument = 0x10fedc;
+     */
+    public void testN7() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(0xfffffedc, t.run(0x10fedc));
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to short makes no sense but shall not crash the VM.  
+     */
+
+    public void testN8() {
+        T_int_to_short_5 t = new T_int_to_short_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d
new file mode 100644
index 0000000..fcf1727
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_1.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       int-to-short v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.java
new file mode 100644
index 0000000..2188088
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_short.d;
+
+public class T_int_to_short_1 {
+
+    public short run(int a) {
+        return (short)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d
new file mode 100644
index 0000000..9c1154b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_2.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-short v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d
new file mode 100644
index 0000000..5f83549
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_3.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-short v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d
new file mode 100644
index 0000000..147fb66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_4.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       int-to-short v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d
new file mode 100644
index 0000000..8ca83e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_5.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)S
+.limit regs 5
+
+       int-to-short v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.java
new file mode 100644
index 0000000..2749fc0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_short.d;
+
+public class T_int_to_short_5 {
+
+    public short run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d
new file mode 100644
index 0000000..8d6f0ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_6.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       int-to-short v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TAbstract.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TAbstract.java
new file mode 100644
index 0000000..f6d0ed0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TAbstract.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct;
+
+public abstract class TAbstract {
+    protected abstract int toInt();
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TPlain.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TPlain.java
new file mode 100644
index 0000000..a6db3d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TPlain.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct;
+
+public class TPlain {
+    public int toInt() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TSuper.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TSuper.java
new file mode 100644
index 0000000..03026ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TSuper.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper {
+    public int val;
+    
+    public int toInt() {
+        return 5;
+    }
+    
+    public int toInt(float v) {
+        return (int)v;
+    }
+    
+    public int testArgsOrder(int a, int b) {
+        return a/b;
+    }
+    
+    public native int toIntNative();
+    
+    public static int toIntStatic() {
+        return 5;
+    }
+    
+    protected int toIntP() {
+        return 5;
+    }
+    
+    private int toIntPvt() {
+        return 5;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java
new file mode 100644
index 0000000..e7c6a0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java
@@ -0,0 +1,337 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_12;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_13;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_16;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_2;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_21;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_6;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_7;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_8;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_9;
+
+public class Test_invoke_direct extends DxTestCase {
+
+    /**
+     * @title private method call
+     */
+    public void testN2() {
+        T_invoke_direct_2 t = new T_invoke_direct_2();
+        assertEquals(345, t.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_direct
+     */
+    public void testN7() {
+        T_invoke_direct_21 t = new T_invoke_direct_21();
+        assertEquals(1, t.run());
+    }
+
+
+
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        T_invoke_direct_8 t = new T_invoke_direct_8();
+        try {
+            assertEquals(5, t.run());
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        T_invoke_direct_9 t = new T_invoke_direct_9();
+        try {
+            assertEquals(5, t.run());
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-direct may not be used to invoke &lt;clinit&gt;
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B4
+     * @title invoke-direct target must be in self or superclass
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_6
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            new T_invoke_direct_6();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title int is passed instead of obj ref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B9
+     * @title number of arguments passed to method
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing protected method
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25
+        //@uses dot.junit.opcodes.invoke_direct.TPlain
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B5
+     * @title  Superclass' method call
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE13() {
+        try {
+            new T_invoke_direct_7().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE14() {
+        try {
+            new T_invoke_direct_16().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke static method. Java throws IncompatibleClassChangeError
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of superclass.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_12
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            new T_invoke_direct_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke abstract method
+     */
+    public void testVFE17() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_13
+        //@uses dot.junit.opcodes.invoke_direct.TAbstract
+        try {
+            new T_invoke_direct_13().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B5
+     * @title An instance initializer must only be invoked on an uninitialized instance.
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B8
+     * @title attempt to access inherited instance field before <init> is called
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title attempt to invoke interface method
+     */
+    public void testVFE20() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_26");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE21() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_27");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d
new file mode 100644
index 0000000..65a8a32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_1.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_1
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/TSuper/toInt()I
+       move-result v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.java
new file mode 100644
index 0000000..b692683
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+import dot.junit.opcodes.invoke_direct.TSuper;
+
+public class T_invoke_direct_1 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d
new file mode 100644
index 0000000..08b22c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_10.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v0, 1222
+       invoke-direct {v0}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d
new file mode 100644
index 0000000..6566718
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_11.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_11/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
+.method private static toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
new file mode 100644
index 0000000..6230fa9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_12.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_12
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.java
new file mode 100644
index 0000000..2911abf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+
+public class T_invoke_direct_12 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d
new file mode 100644
index 0000000..23d4378
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_13.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_13
+.super dot/junit/opcodes/invoke_direct/TAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/TAbstract/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.java
new file mode 100644
index 0000000..df8d0d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+
+public class T_invoke_direct_13 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d
new file mode 100644
index 0000000..4d10ce8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_14.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v3, 50
+       const v4, 25
+       
+       invoke-direct {v6, v3}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d
new file mode 100644
index 0000000..55b7d3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_15.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v3}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d
new file mode 100644
index 0000000..10e041d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_16.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16/toInt()F
+       
+       const/4 v1, 0
+       return v1
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.java
new file mode 100644
index 0000000..cae7ae8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+
+public class T_invoke_direct_16 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d
new file mode 100644
index 0000000..35a54d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_17.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, java/lang/String
+       invoke-direct {v0} java/lang/String/<init>()V
+         invoke-direct {v0} java/lang/String/<init>()V
+       return-void       
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d
new file mode 100644
index 0000000..602cbeb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_18.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       const v0, 0
+       iput v0, v1, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18.val I
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d
new file mode 100644
index 0000000..0c11388
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_2.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.java
new file mode 100644
index 0000000..ab6e1ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_2 {
+
+    public int run() {
+        return getInt();
+    }
+
+    private int getInt() {
+        return 345;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d
new file mode 100644
index 0000000..d6653fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_21.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v3, 50
+       const v4, 25
+       
+       invoke-direct {v6, v3, v4}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.java
new file mode 100644
index 0000000..cec52ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_21 {
+
+    
+    private int test(int a, int b) {
+        int i = 999;
+        int j = 888;
+        int k = 777;
+        return a / b;
+    }
+    
+    public int run() {
+        int i = 111;
+        int j = 222;
+        int k = 333;
+        test(50, 25);
+        
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d
new file mode 100644
index 0000000..83fd3db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_24.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_24
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       
+       const-wide v3, 50
+       
+       invoke-direct {v6, v3, v4}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d
new file mode 100644
index 0000000..8d872ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_25.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_direct/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/TPlain/<init>()V
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25/test()V
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d
new file mode 100644
index 0000000..40cce50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_direct.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_direct.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_direct.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_direct_26.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_26
+.super dot/junit/opcodes/invoke_direct/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-direct {v7}, dot/junit/opcodes/invoke_direct/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d
new file mode 100644
index 0000000..0ac6b37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_27.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_27
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public static run()V
+.limit regs 3
+
+       new-instance v0, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27
+       
+       invoke-direct {v0}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27/test()V
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d
new file mode 100644
index 0000000..6aa7821
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_3.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dfh
new file mode 100644
index 0000000..993ee4e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dfh
@@ -0,0 +1,285 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b8124ca4
+    A4 4C 12 B8 
+// parsed: offset 12, len 20: signature           : 70e1...b983
+    70 E1 1F B5 6C 1D F3 77 2E 7D E3 42 02 A1 DA DC 85 4D B9 83 
+// parsed: offset 32, len 4: file_size           : 592
+    50 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 344
+    58 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 324 (0x000144) "<init>"
+    44 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 332 (0x00014c) "I"
+    4C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 390 (0x000186) "Ljava/lang/Object;"
+    86 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 410 (0x00019a) "T_invoke_direct_3.java"
+    9A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 434 (0x0001b2) "V"
+    B2 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 437 (0x0001b5) "getInt"
+    B5 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 445 (0x0001bd) "run"
+    BD 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "getInt"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_invoke_direct_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 450 (0x0001c2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 C2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3.getInt"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: const/16 v1, #int 345 // #0x159
+            13 01 59 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;.getInt:()I // method@0001
+//@mod            70 10 01 00 02 00 
+            70 10 01 01 02 00 
+        // parsed: offset 318, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 320, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 322, len 2: PADDING
+    00 00 
+// parsed: offset 324, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 332, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 335, len 55: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 33 3B 00 
+// parsed: offset 390, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 410, len 24: TYPE_STRING_DATA_ITEM [4] "T_invoke_direct_3.java"
+    16 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 434, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 437, len 8: TYPE_STRING_DATA_ITEM [6] "getInt"
+    06 67 65 74 49 6E 74 00 
+// parsed: offset 445, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    // parsed: offset 450, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 451, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 452, len 1: direct_methods_size: 2
+        02 
+    // parsed: offset 453, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 454, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 455, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 458, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+        // method [1]:
+            // parsed: offset 460, len 1: method_idx_diff: 1 (method_idx: 1 "getInt")
+                01 
+            // parsed: offset 461, len 1: access_flags: 0x000002 (PRIVATE)
+                02 
+            // parsed: offset 462, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 464, len 1: method_idx_diff: 2 (method_idx: 2 "run")
+                02 
+            // parsed: offset 465, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 466, len 2: code_off: 296 (0x000128)
+                A8 02 
+// map_list:
+    // parsed: offset 468, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 04 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 03 00 00 00 F8 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 324 (0x000144)
+        02 20 00 00 08 00 00 00 44 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 450 (0x0001c2)
+        00 20 00 00 01 00 00 00 C2 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
new file mode 100644
index 0000000..e6e7511
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_4.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_4
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+    invoke-direct {v0}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4/<clinit>()V
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d
new file mode 100644
index 0000000..c4dac34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_5.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d
new file mode 100644
index 0000000..6bb8833
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d
@@ -0,0 +1,27 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_6.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V    
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/toIntPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.java
new file mode 100644
index 0000000..6f95a12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_6 {
+    public T_invoke_direct_6() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d
new file mode 100644
index 0000000..2c1b99b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_7.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7/toInt()I
+       const v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.java
new file mode 100644
index 0000000..b640fa3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+
+public class T_invoke_direct_7 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d
new file mode 100644
index 0000000..99b510b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_8.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/4 v1, 0
+       invoke-direct {v1}, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_8/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.java
new file mode 100644
index 0000000..8c9825d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_8 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d
new file mode 100644
index 0000000..262b5ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_9.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_9/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private native toInt()I
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.java
new file mode 100644
index 0000000..c0913ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_9 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TAbstract.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TAbstract.java
new file mode 100644
index 0000000..8c5ab27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TAbstract.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range;
+
+public abstract class TAbstract {
+    protected abstract int toInt();
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TPlain.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TPlain.java
new file mode 100644
index 0000000..3e4aab1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TPlain.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range;
+
+public class TPlain {
+    public int toInt() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TSuper.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TSuper.java
new file mode 100644
index 0000000..c8cbc0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TSuper.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dot.junit.opcodes.invoke_direct_range;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper {
+    public int val;
+    public int toInt() {
+        return 5;
+    }
+
+    public int toInt(float v) {
+        return (int)v;
+    }
+
+    public int testArgsOrder(int a, int b) {
+        return a/b;
+    }
+
+    public native int toIntNative();
+
+    public static int toIntStatic() {
+        return 5;
+    }
+
+    protected int toIntP() {
+        return 5;
+    }
+
+    private int toIntPvt() {
+        return 5;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java
new file mode 100644
index 0000000..1682c68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java
@@ -0,0 +1,338 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_12;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_13;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_16;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_2;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_21;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_6;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_7;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_8;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_9;
+
+public class Test_invoke_direct_range extends DxTestCase {
+
+    /**
+     * @title private method call
+     */
+    public void testN2() {
+        T_invoke_direct_range_2 t = new T_invoke_direct_range_2();
+        assertEquals(345, t.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_direct_range
+     */
+    public void testN7() {
+        T_invoke_direct_range_21 t = new T_invoke_direct_range_21();
+        assertEquals(1, t.run());
+    }
+
+
+
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        T_invoke_direct_range_8 t = new T_invoke_direct_range_8();
+        try {
+            assertEquals(5, t.run());
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        T_invoke_direct_range_9 t = new T_invoke_direct_range_9();
+        try {
+            assertEquals(5, t.run());
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-direct may not be used to invoke &lt;clinit&gt;
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B4
+     * @title invoke-direct target must be in self or superclass
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_6
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            new T_invoke_direct_range_6();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title int is passed instead of obj ref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B9
+     * @title number of arguments passed to method
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing protected method
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25
+        //@uses dot.junit.opcodes.invoke_direct_range.TPlain
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B5
+     * @title  Superclass' method call
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE13() {
+        try {
+            new T_invoke_direct_range_7().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE14() {
+        try {
+            new T_invoke_direct_range_16().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke static method. Java throws IncompatibleClassChangeError
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of superclass. Java throws IllegalAccessError
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_12
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            new T_invoke_direct_range_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke abstract method
+     */
+    public void testVFE17() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_13
+        //@uses dot.junit.opcodes.invoke_direct_range.TAbstract
+        try {
+            new T_invoke_direct_range_13().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B5
+     * @title An instance initializer must only be invoked on an uninitialized instance.
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B8
+     * @title attempt to access inherited instance field before <init> is called
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title attempt to invoke interface method
+     */
+    public void testVFE20() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_26");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE21() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_27");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d
new file mode 100644
index 0000000..7123eb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_1.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_1
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/TSuper/toInt()I
+       move-result v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.java
new file mode 100644
index 0000000..243b923
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+import dot.junit.opcodes.invoke_direct_range.TSuper;
+
+public class T_invoke_direct_range_1 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d
new file mode 100644
index 0000000..2dcf576
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_10.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v0, 1222
+       invoke-direct/range {v0}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d
new file mode 100644
index 0000000..772fc10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_11.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_11/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
+.method private static toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
new file mode 100644
index 0000000..a107ac3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_12.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_12
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.java
new file mode 100644
index 0000000..e01b4f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_12 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d
new file mode 100644
index 0000000..830c367
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_13.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_13
+.super dot/junit/opcodes/invoke_direct_range/TAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/TAbstract/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.java
new file mode 100644
index 0000000..39c9977
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_13 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d
new file mode 100644
index 0000000..a59d5ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_14.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v4, 50
+       const v5, 25
+       move-object v3, v6
+       invoke-direct/range {v3..v4}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d
new file mode 100644
index 0000000..343eafd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_15.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v3}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d
new file mode 100644
index 0000000..82b85d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_16.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16/toInt()F
+       
+       const/4 v1, 0
+       return v1
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.java
new file mode 100644
index 0000000..c593d95
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_16 {
+    public int run() {
+        return 0;
+    }
+
+    private int toInt() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d
new file mode 100644
index 0000000..add1dc9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_17.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, java/lang/String
+       invoke-direct/range {v0} java/lang/String/<init>()V
+         invoke-direct/range {v0} java/lang/String/<init>()V
+       return-void       
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d
new file mode 100644
index 0000000..3922d1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_18.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       const v0, 0
+       iput v0, v1, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18.val I
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d
new file mode 100644
index 0000000..3d4e23c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_2.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.java
new file mode 100644
index 0000000..09fa293
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_2 {
+
+    public int run() {
+        return getInt();
+    }
+
+    private int getInt() {
+        return 345;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d
new file mode 100644
index 0000000..234de66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_21.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v4, 50
+       const v5, 25
+         move-object v3, v6
+       invoke-direct/range {v3..v5}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.java
new file mode 100644
index 0000000..537d238
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_21 {
+
+    
+    private int test(int a, int b) {
+        int i = 999;
+        int j = 888;
+        int k = 777;
+        return a / b;
+    }
+    
+    public int run() {
+        int i = 111;
+        int j = 222;
+        int k = 333;
+        test(50, 25);
+        
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d
new file mode 100644
index 0000000..31a24c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_24.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_24
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       
+       const-wide v4, 50
+          move-object v3, v6
+       invoke-direct {v3..v5}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d
new file mode 100644
index 0000000..6c2334e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_25.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_direct_range/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct_range/TPlain/<init>()V
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25/test()V
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d
new file mode 100644
index 0000000..6160fe5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_direct_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_direct_range.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_direct_range.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_direct_range_26.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_26
+.super dot/junit/opcodes/invoke_direct_range/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct_range/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-direct/range {v7}, dot/junit/opcodes/invoke_direct_range/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d
new file mode 100644
index 0000000..1073241
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_27.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_27
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public static run()V
+.limit regs 3
+
+       new-instance v0, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27
+       
+       invoke-direct/range {v0}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27/test()V
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d
new file mode 100644
index 0000000..056f2c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_3.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dfh
new file mode 100644
index 0000000..9772f88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dfh
@@ -0,0 +1,287 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c60753cb
+    CB 53 07 C6 
+// parsed: offset 12, len 20: signature           : 556e...6eba
+    55 6E A2 8D 60 66 C0 56 70 4C 6B 33 11 26 64 F4 F4 94 6E BA 
+// parsed: offset 32, len 4: file_size           : 612
+    64 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 324 (0x000144) "<init>"
+    44 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 332 (0x00014c) "I"
+    4C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 402 (0x000192) "Ljava/lang/Object;"
+    92 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 422 (0x0001a6) "T_invoke_direct_range_3.java"
+    A6 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 452 (0x0001c4) "V"
+    C4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 455 (0x0001c7) "getInt"
+    C7 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "getInt"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_invoke_direct_range_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3.getInt"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: const/16 v1, #int 345 // #0x159
+            13 01 59 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: invoke-direct/range {v2..v2}, Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;.getInt:()I // method@0001
+//@mod            76 01 01 00 02 00 
+            76 01 01 01 02 00 
+        // parsed: offset 318, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 320, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 322, len 2: PADDING
+    00 00 
+// parsed: offset 324, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 332, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 335, len 67: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    41 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 72 61 6E 67 65 5F 33 3B 00 
+// parsed: offset 402, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 422, len 30: TYPE_STRING_DATA_ITEM [4] "T_invoke_direct_range_3.java"
+    1C 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 72 61 6E 67 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 452, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 455, len 8: TYPE_STRING_DATA_ITEM [6] "getInt"
+    06 67 65 74 49 6E 74 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 2
+        02 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+        // method [1]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "getInt")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000002 (PRIVATE)
+                02 
+            // parsed: offset 480, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 482, len 1: method_idx_diff: 2 (method_idx: 2 "run")
+                02 
+            // parsed: offset 483, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 484, len 2: code_off: 296 (0x000128)
+                A8 02 
+// parsed: offset 486, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 488, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 04 00 00 00 B8 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 03 00 00 00 F8 00 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 324 (0x000144)
+        02 20 00 00 08 00 00 00 44 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d
new file mode 100644
index 0000000..a7aeae9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_4.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_4
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+    invoke-direct/range {v0}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4/<clinit>()V
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d
new file mode 100644
index 0000000..4ec85bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_5.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d
new file mode 100644
index 0000000..cda9caf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d
@@ -0,0 +1,27 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_6.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V    
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/toIntPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.java
new file mode 100644
index 0000000..b1e3a6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_6 {
+    public T_invoke_direct_range_6() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d
new file mode 100644
index 0000000..f0254f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_7.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7/toInt()I
+       const v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.java
new file mode 100644
index 0000000..f68ed92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_7 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d
new file mode 100644
index 0000000..946c65f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_8.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/4 v1, 0
+       invoke-direct/range {v1}, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_8/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.java
new file mode 100644
index 0000000..bde2e71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_8 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d
new file mode 100644
index 0000000..567bd84
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_9.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_9/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private native toInt()I
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.java
new file mode 100644
index 0000000..db73113
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_9 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITest.java
new file mode 100644
index 0000000..79917a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITest.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface;
+
+public interface ITest {
+    public void doit();
+    public void doit(int i);
+    public void doitNative();
+    public int test(int a);
+    public int testArgsOrder(int a, int b);
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImpl.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImpl.java
new file mode 100644
index 0000000..cf0c0c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface;
+
+public class ITestImpl implements ITest {
+    public void doit() {
+        // impl
+    }
+
+    public void doit(int i) {
+        //
+    }
+
+    public native void doitNative();
+
+    public int test(int a) {
+        if (a == 999) return 195;
+        return 0;
+    }
+
+    public int testArgsOrder(int a, int b) {
+        return a / b;
+    }
+
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImplAbstract.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImplAbstract.java
new file mode 100644
index 0000000..af7a36029
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImplAbstract.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface;
+
+
+public abstract class ITestImplAbstract implements ITest {
+    abstract public void doit();
+    abstract public void doit(int i);
+    public native void doitNative();
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
new file mode 100644
index 0000000..377cc58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
@@ -0,0 +1,293 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_1;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_11;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_12;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_13;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_14;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_16;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_18;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_20;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_21;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_3;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_4;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_5;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_7;
+
+public class Test_invoke_interface extends DxTestCase {
+
+    /**
+     * @title invoke interface method
+     */
+    public void testN1() {
+        T_invoke_interface_1 t = new T_invoke_interface_1();
+        assertEquals(0, t.run("aa", "aa"));
+        assertEquals(-1, t.run("aa", "bb"));
+        assertEquals(1, t.run("bb", "aa"));
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_interface and
+     * arguments are passed to method
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_14
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        T_invoke_interface_14 t = new T_invoke_interface_14();
+        ITestImpl impl = new ITestImpl();
+        assertEquals(1, t.run(impl));
+    }
+
+
+
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_3
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        try {
+            new T_invoke_interface_3(null);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title object doesn't implement interface
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_11
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        T_invoke_interface_11 t = new T_invoke_interface_11();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_12
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        T_invoke_interface_12 t = new T_invoke_interface_12();
+        ITestImpl impl = new ITestImpl();
+        try {
+            t.run(impl);
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE6() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_13
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        //@uses dot.junit.opcodes.invoke_interface.ITestImplAbstract
+        T_invoke_interface_13 t = new T_invoke_interface_13();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A16
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A16
+     * @title The referenced method_id must belong to an interface (not a class).
+     */
+    public void testVFE2() {
+        try {
+            new T_invoke_interface_4().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            new T_invoke_interface_5(new ITestImpl());
+            fail("expected VerifyError");
+        } catch (VerifyError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title int is passed instead of objref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title number of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-interface may not be used to call <init>.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        //@uses dot.junit.opcodes.invoke_interface.ITestImplAbstract
+        try {
+            new T_invoke_interface_18().run(new ITestImpl());
+            fail("expected InstantiationError");
+        } catch (InstantiationError t) {
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-interface may not be used to call <clinit>.
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            new T_invoke_interface_20().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            new T_invoke_interface_21().run(new ITestImpl());
+            fail("expected VerifyError");
+        } catch (VerifyError t) {
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_7
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            new T_invoke_interface_7().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_16
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            new T_invoke_interface_16().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE21() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_22
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d
new file mode 100644
index 0000000..72c1843
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_1.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v6, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.java
new file mode 100644
index 0000000..4e0f991
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+public class T_invoke_interface_1 {
+
+    public int run(Comparable c, Object o) {
+        return c.compareTo(o);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d
new file mode 100644
index 0000000..65ca5f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_10.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+       const v6, 1243
+       invoke-interface {v6, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d
new file mode 100644
index 0000000..110d826
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_11.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.java
new file mode 100644
index 0000000..1bde245
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+
+public class T_invoke_interface_11 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d
new file mode 100644
index 0000000..c623612
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_12.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doitNative()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.java
new file mode 100644
index 0000000..344e3d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_12 {
+
+    public void run(ITest test) {
+        test.doitNative();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d
new file mode 100644
index 0000000..8d696af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_13.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_13
+.super dot/junit/opcodes/invoke_interface/ITestImplAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_interface/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 7
+
+       invoke-interface {v6}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.java
new file mode 100644
index 0000000..d0cd67d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+
+public class T_invoke_interface_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d
new file mode 100644
index 0000000..d6ce02a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_14.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)I
+.limit regs 9
+    const v1, 123
+    const v2, 345
+
+    const v4, 64
+    const v5, 2
+    invoke-interface {v8, v4, v5}, dot/junit/opcodes/invoke_interface/ITest/testArgsOrder(II)I
+    move-result v4
+    const v5, 32
+    if-ne v4, v5, Label0
+
+    const v5, 123
+    if-ne v5, v1, Label0
+
+    const v5, 345
+    if-ne v5, v2, Label0
+
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.java
new file mode 100644
index 0000000..11a8128
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_14 {
+
+    public int run(ITest test) {
+        int a = 123;
+        int b = 345;
+        if(test.testArgsOrder(64, 2) == 32)
+        {
+            if(a == 123)
+                if(b == 345)
+                    return 1;
+        }
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d
new file mode 100644
index 0000000..3c972ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_16.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 6
+
+       const/high16 v3, 1065353216
+       invoke-interface {v5, v3}, dot/junit/opcodes/invoke_interface/ITest/doit(F)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.java
new file mode 100644
index 0000000..f244ea3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_16 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
new file mode 100644
index 0000000..f792a3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_18.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 8
+       new-instance v2, dot/junit/opcodes/invoke_interface/ITestImplAbstract
+       invoke-interface {v2}, dot/junit/opcodes/invoke_interface/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.java
new file mode 100644
index 0000000..b9f9ccc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_18 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d
new file mode 100644
index 0000000..9c5e86d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_2.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v6, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dfh
new file mode 100644
index 0000000..d1d1886
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dfh
@@ -0,0 +1,294 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0a295956
+    56 59 29 0A 
+// parsed: offset 12, len 20: signature           : 1dee...09a5
+    1D EE 44 4E 27 44 F2 88 7C 13 FE E3 09 B1 55 80 3C 7B 09 A5 
+// parsed: offset 32, len 4: file_size           : 664
+    98 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 528 (0x000210)
+    10 02 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 11
+    0B 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 176 (0x0000b0)
+    B0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 244 (0x0000f4)
+    F4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 388
+    84 01 00 00 
+// parsed: offset 108, len 4: data_off            : 276 (0x000114)
+    14 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 342 (0x000156) "<init>"
+    56 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 350 (0x00015e) "I"
+    5E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "IL"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 357 (0x000165) "ILL"
+    65 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 362 (0x00016a) "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    6A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 423 (0x0001a7) "Ljava/lang/Comparable;"
+    A7 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 447 (0x0001bf) "Ljava/lang/Object;"
+    BF 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 467 (0x0001d3) "T_invoke_interface_2.java"
+    D3 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 494 (0x0001ee) "V"
+    EE 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 497 (0x0001f1) "compareTo"
+    F1 01 00 00 
+// parsed: offset 152, len 4: [10] string_data_off: 508 (0x0001fc) "run"
+    FC 01 00 00 
+
+// type_ids:
+// parsed: offset 156, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 160, len 4: [1] descriptor_idx: 4 (0x000004) "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [2] descriptor_idx: 5 (0x000005) "Ljava/lang/Comparable;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [3] descriptor_idx: 6 (0x000006) "Ljava/lang/Object;"
+    06 00 00 00 
+// parsed: offset 172, len 4: [4] descriptor_idx: 8 (0x000008) "V"
+    08 00 00 00 
+
+// proto_ids:
+// parsed: offset 176, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "ILL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    03 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 188, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "IL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 336 (0x000150)
+    02 00 00 00 00 00 00 00 50 01 00 00 
+// parsed: offset 200, len 12: [2] 
+//     shorty_idx: 8 (0x000008) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    08 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 212, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 220, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 10 (0x00000a) "run"
+    01 00 00 00 0A 00 00 00 
+// parsed: offset 228, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 9 (0x000009) "compareTo"
+    02 00 01 00 09 00 00 00 
+// parsed: offset 236, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 244, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 7 "T_invoke_interface_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 513 (0x000201)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 01 02 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2.<init>"
+    // parsed: offset 276, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 278, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 280, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 282, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 284, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 288, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 292, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 298, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2.run"
+    // parsed: offset 300, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 302, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 304, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 306, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 308, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 312, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 316, len 6: |0000: invoke-interface {v6, v7}, Ljava/lang/Comparable;.compareTo:(Ljava/lang/Object;)I // method@0002
+//@mod            72 20 02 00 76 00 
+            72 20 02 01 76 00 
+        // parsed: offset 322, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 324, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 2
+        02 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 3
+        03 00 
+// TYPE_LIST
+    // parsed: offset 336, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 340, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 342, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 350, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 353, len 4: TYPE_STRING_DATA_ITEM [2] "IL"
+    02 49 4C 00 
+// parsed: offset 357, len 5: TYPE_STRING_DATA_ITEM [3] "ILL"
+    03 49 4C 4C 00 
+// parsed: offset 362, len 61: TYPE_STRING_DATA_ITEM [4] "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    3B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 32 3B 00 
+// parsed: offset 423, len 24: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Comparable;"
+    16 4C 6A 61 76 61 2F 6C 61 6E 67 2F 43 6F 6D 70 61 72 61 62 6C 65 3B 00 
+// parsed: offset 447, len 20: TYPE_STRING_DATA_ITEM [6] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 467, len 27: TYPE_STRING_DATA_ITEM [7] "T_invoke_interface_2.java"
+    19 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 494, len 3: TYPE_STRING_DATA_ITEM [8] "V"
+    01 56 00 
+// parsed: offset 497, len 11: TYPE_STRING_DATA_ITEM [9] "compareTo"
+    09 63 6F 6D 70 61 72 65 54 6F 00 
+// parsed: offset 508, len 5: TYPE_STRING_DATA_ITEM [10] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    // parsed: offset 513, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 514, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 515, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 516, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 517, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 518, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 521, len 2: code_off: 276 (0x000114)
+                94 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 523, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 524, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 525, len 2: code_off: 300 (0x00012c)
+                AC 02 
+// parsed: offset 527, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 528, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 532, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 544, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 112 (0x000070)
+        01 00 00 00 0B 00 00 00 70 00 00 00 
+    // parsed: offset 556, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 156 (0x00009c)
+        02 00 00 00 05 00 00 00 9C 00 00 00 
+    // parsed: offset 568, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 176 (0x0000b0)
+        03 00 00 00 03 00 00 00 B0 00 00 00 
+    // parsed: offset 580, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 212 (0x0000d4)
+        05 00 00 00 04 00 00 00 D4 00 00 00 
+    // parsed: offset 592, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 244 (0x0000f4)
+        06 00 00 00 01 00 00 00 F4 00 00 00 
+    // parsed: offset 604, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 276 (0x000114)
+        01 20 00 00 02 00 00 00 14 01 00 00 
+    // parsed: offset 616, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 328 (0x000148)
+        01 10 00 00 02 00 00 00 48 01 00 00 
+    // parsed: offset 628, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 342 (0x000156)
+        02 20 00 00 0B 00 00 00 56 01 00 00 
+    // parsed: offset 640, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 513 (0x000201)
+        00 20 00 00 01 00 00 00 01 02 00 00 
+    // parsed: offset 652, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 528 (0x000210)
+        00 10 00 00 01 00 00 00 10 02 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d
new file mode 100644
index 0000000..c2465e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_20.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_20
+.super java/lang/Object
+
+.field public static i I
+
+.method static <clinit>()V
+.limit regs 2
+Label0:
+       const/4 v1, 0
+       sput v1, dot.junit.opcodes.invoke_interface.d.T_invoke_interface_20.i I
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+
+       invoke-interface {v3}, dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.java
new file mode 100644
index 0000000..f40b587
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_20 {
+
+    public static int i = 0;
+    
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d
new file mode 100644
index 0000000..f8b0dea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_21.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 9
+
+    const-wide v4, 64
+    invoke-interface {v8, v4, v5}, dot/junit/opcodes/invoke_interface/ITest/testArgsOrder(II)I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.java
new file mode 100644
index 0000000..f777a6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_21 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d
new file mode 100644
index 0000000..7c27ad2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_22.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_22
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v0, dot/junit/opcodes/invoke_interface/ITestImpl
+
+       invoke-interface {v0}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d
new file mode 100644
index 0000000..debf41a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_3.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_3
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+Label0:
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.java
new file mode 100644
index 0000000..8c63c18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_3 {
+
+    public T_invoke_interface_3 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d
new file mode 100644
index 0000000..a8de67b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_4.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-interface {v7}, dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4/test()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.java
new file mode 100644
index 0000000..4f751fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+
+public class T_invoke_interface_4 {
+    public void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d
new file mode 100644
index 0000000..adf7abe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_5.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_5
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 2
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+        invoke-interface {}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.java
new file mode 100644
index 0000000..7615134
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+
+public class T_invoke_interface_5 {
+
+    public T_invoke_interface_5(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d
new file mode 100644
index 0000000..c96f200
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_7.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doitN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.java
new file mode 100644
index 0000000..b249ded
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_7 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d
new file mode 100644
index 0000000..8bf956e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_8.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v8, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d
new file mode 100644
index 0000000..2fc4a90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_9.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v6}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITest.java
new file mode 100644
index 0000000..404787e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITest.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range;
+
+public interface ITest {
+    public void doit();
+    public void doit(int i);
+    public void doitNative();
+    public int test(int a);
+    public int testArgsOrder(int a, int b);
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImpl.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImpl.java
new file mode 100644
index 0000000..e1d871a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImpl.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range;
+
+
+
+public class ITestImpl implements ITest {
+    public void doit() {
+        // impl
+    }
+
+    public void doit(int i) {
+        //
+    }
+
+    public native void doitNative();
+
+    public int test(int a) {
+        if (a == 999) return 195;
+        return 0;
+    }
+
+    public int testArgsOrder(int a, int b) {
+        return a / b;
+    }
+
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImplAbstract.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImplAbstract.java
new file mode 100644
index 0000000..aee0064
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImplAbstract.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range;
+
+
+public abstract class ITestImplAbstract implements ITest {
+    abstract public void doit();
+    abstract public void doit(int i);
+    public native void doitNative();
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java
new file mode 100644
index 0000000..abb4855
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java
@@ -0,0 +1,293 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_1;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_11;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_12;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_13;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_14;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_16;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_18;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_20;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_21;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_3;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_4;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_5;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_7;
+
+public class Test_invoke_interface_range extends DxTestCase {
+
+    /**
+     * @title invoke interface method
+     */
+    public void testN1() {
+        T_invoke_interface_range_1 t = new T_invoke_interface_range_1();
+        assertEquals(0, t.run("aa", "aa"));
+        assertEquals(-1, t.run("aa", "bb"));
+        assertEquals(1, t.run("bb", "aa"));
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_interface_range and
+     * arguments are passed to method
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_14
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        T_invoke_interface_range_14 t = new T_invoke_interface_range_14();
+        ITestImpl impl = new ITestImpl();
+        assertEquals(1, t.run(impl));
+    }
+
+
+
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_3
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        try {
+            new T_invoke_interface_range_3(null);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title object doesn't implement interface
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_11
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        T_invoke_interface_range_11 t = new T_invoke_interface_range_11();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_12
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        T_invoke_interface_range_12 t = new T_invoke_interface_range_12();
+        ITestImpl impl = new ITestImpl();
+        try {
+            t.run(impl);
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE6() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_13
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImplAbstract
+        T_invoke_interface_range_13 t = new T_invoke_interface_range_13();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A17
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A17
+     * @title The referenced method_id must belong to an interface (not a class).
+     */
+    public void testVFE2() {
+        try {
+            new T_invoke_interface_range_4().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            new T_invoke_interface_range_5(new ITestImpl());
+            fail("expected VerifyError");
+        } catch (VerifyError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title int is passed instead of objref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title number of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-interface may not be used to call <init>.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImplAbstract
+        try {
+            new T_invoke_interface_range_18().run(new ITestImpl());
+            fail("expected InstantiationError");
+        } catch (InstantiationError t) {
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-interface may not be used to call <clinit>.
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            new T_invoke_interface_range_20().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            new T_invoke_interface_range_21().run(new ITestImpl());
+            fail("expected VerifyError");
+        } catch (VerifyError t) {
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_7
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            new T_invoke_interface_range_7().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_16
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            new T_invoke_interface_range_16().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE21() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_22
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d
new file mode 100644
index 0000000..70fee02
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_1.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.java
new file mode 100644
index 0000000..fa6fd15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+public class T_invoke_interface_range_1 {
+
+    public int run(Comparable c, Object o) {
+        return c.compareTo(o);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d
new file mode 100644
index 0000000..d78f6c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_10.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+       const v6, 1243
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d
new file mode 100644
index 0000000..d0fe868
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_11.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.java
new file mode 100644
index 0000000..d990613
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+
+public class T_invoke_interface_range_11 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d
new file mode 100644
index 0000000..7463912
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_12.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doitNative()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.java
new file mode 100644
index 0000000..b5a2167
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_12 {
+
+    public void run(ITest test) {
+        test.doitNative();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d
new file mode 100644
index 0000000..4b0ea65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_13.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_13
+.super dot/junit/opcodes/invoke_interface_range/ITestImplAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 7
+
+       invoke-interface/range {v6}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.java
new file mode 100644
index 0000000..1d9989b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+
+public class T_invoke_interface_range_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d
new file mode 100644
index 0000000..ce6cd80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_14.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)I
+.limit regs 9
+    const v1, 123
+    const v2, 345
+
+    const v4, 64
+    const v5, 2
+    move-object v3, v8
+    invoke-interface/range {v3..v5}, dot/junit/opcodes/invoke_interface_range/ITest/testArgsOrder(II)I
+    move-result v4
+    const v5, 32
+    if-ne v4, v5, Label0
+
+    const v5, 123
+    if-ne v5, v1, Label0
+
+    const v5, 345
+    if-ne v5, v2, Label0
+
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.java
new file mode 100644
index 0000000..ac996f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_14 {
+
+    public int run(ITest test) {
+        int a = 123;
+        int b = 345;
+        if(test.testArgsOrder(64, 2) == 32)
+        {
+            if(a == 123)
+                if(b == 345)
+                    return 1;
+        }
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d
new file mode 100644
index 0000000..2cfcc5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_16.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 6
+
+       const/high16 v3, 1065353216
+       move-object v2, v5
+       invoke-interface/range {v2..v3}, dot/junit/opcodes/invoke_interface_range/ITest/doit(F)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.java
new file mode 100644
index 0000000..ada5988
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_16 {
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
new file mode 100644
index 0000000..0174a71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_18.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 8
+       new-instance v2, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract
+       invoke-interface/range {v2}, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.java
new file mode 100644
index 0000000..5c93b22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_18 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d
new file mode 100644
index 0000000..cd8bc3e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_2.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dfh
new file mode 100644
index 0000000..9bc316f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dfh
@@ -0,0 +1,294 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f75b5e58
+    58 5E 5B F7 
+// parsed: offset 12, len 20: signature           : 8d58...fcad
+    8D 58 41 7D D6 50 6A 07 7B 67 E0 45 7B 76 2A 94 0C A4 FC AD 
+// parsed: offset 32, len 4: file_size           : 684
+    AC 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 548 (0x000224)
+    24 02 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 11
+    0B 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 176 (0x0000b0)
+    B0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 244 (0x0000f4)
+    F4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 408
+    98 01 00 00 
+// parsed: offset 108, len 4: data_off            : 276 (0x000114)
+    14 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 342 (0x000156) "<init>"
+    56 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 350 (0x00015e) "I"
+    5E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "IL"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 357 (0x000165) "ILL"
+    65 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 362 (0x00016a) "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    6A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 435 (0x0001b3) "Ljava/lang/Comparable;"
+    B3 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 459 (0x0001cb) "Ljava/lang/Object;"
+    CB 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 479 (0x0001df) "T_invoke_interface_range_2.java"
+    DF 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 512 (0x000200) "V"
+    00 02 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 515 (0x000203) "compareTo"
+    03 02 00 00 
+// parsed: offset 152, len 4: [10] string_data_off: 526 (0x00020e) "run"
+    0E 02 00 00 
+
+// type_ids:
+// parsed: offset 156, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 160, len 4: [1] descriptor_idx: 4 (0x000004) "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [2] descriptor_idx: 5 (0x000005) "Ljava/lang/Comparable;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [3] descriptor_idx: 6 (0x000006) "Ljava/lang/Object;"
+    06 00 00 00 
+// parsed: offset 172, len 4: [4] descriptor_idx: 8 (0x000008) "V"
+    08 00 00 00 
+
+// proto_ids:
+// parsed: offset 176, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "ILL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    03 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 188, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "IL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 336 (0x000150)
+    02 00 00 00 00 00 00 00 50 01 00 00 
+// parsed: offset 200, len 12: [2] 
+//     shorty_idx: 8 (0x000008) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    08 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 212, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 220, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 10 (0x00000a) "run"
+    01 00 00 00 0A 00 00 00 
+// parsed: offset 228, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 9 (0x000009) "compareTo"
+    02 00 01 00 09 00 00 00 
+// parsed: offset 236, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 244, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 7 "T_invoke_interface_range_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 531 (0x000213)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 13 02 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2.<init>"
+    // parsed: offset 276, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 278, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 280, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 282, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 284, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 288, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 292, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 298, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2.run"
+    // parsed: offset 300, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 302, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 304, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 306, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 308, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 312, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 316, len 6: |0000: invoke-interface/range {v6..v7}, Ljava/lang/Comparable;.compareTo:(Ljava/lang/Object;)I // method@0002
+//@mod            78 02 02 00 06 00 
+            78 02 02 01 06 00 
+        // parsed: offset 322, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 324, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 2
+        02 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 3
+        03 00 
+// TYPE_LIST
+    // parsed: offset 336, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 340, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 342, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 350, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 353, len 4: TYPE_STRING_DATA_ITEM [2] "IL"
+    02 49 4C 00 
+// parsed: offset 357, len 5: TYPE_STRING_DATA_ITEM [3] "ILL"
+    03 49 4C 4C 00 
+// parsed: offset 362, len 73: TYPE_STRING_DATA_ITEM [4] "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    47 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 72 61 6E 67 65 5F 32 3B 00 
+// parsed: offset 435, len 24: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Comparable;"
+    16 4C 6A 61 76 61 2F 6C 61 6E 67 2F 43 6F 6D 70 61 72 61 62 6C 65 3B 00 
+// parsed: offset 459, len 20: TYPE_STRING_DATA_ITEM [6] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 479, len 33: TYPE_STRING_DATA_ITEM [7] "T_invoke_interface_range_2.java"
+    1F 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 72 61 6E 67 65 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 512, len 3: TYPE_STRING_DATA_ITEM [8] "V"
+    01 56 00 
+// parsed: offset 515, len 11: TYPE_STRING_DATA_ITEM [9] "compareTo"
+    09 63 6F 6D 70 61 72 65 54 6F 00 
+// parsed: offset 526, len 5: TYPE_STRING_DATA_ITEM [10] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    // parsed: offset 531, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 532, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 533, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 534, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 535, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 536, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 539, len 2: code_off: 276 (0x000114)
+                94 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 541, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 542, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 543, len 2: code_off: 300 (0x00012c)
+                AC 02 
+// parsed: offset 545, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 548, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 552, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 564, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 112 (0x000070)
+        01 00 00 00 0B 00 00 00 70 00 00 00 
+    // parsed: offset 576, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 156 (0x00009c)
+        02 00 00 00 05 00 00 00 9C 00 00 00 
+    // parsed: offset 588, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 176 (0x0000b0)
+        03 00 00 00 03 00 00 00 B0 00 00 00 
+    // parsed: offset 600, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 212 (0x0000d4)
+        05 00 00 00 04 00 00 00 D4 00 00 00 
+    // parsed: offset 612, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 244 (0x0000f4)
+        06 00 00 00 01 00 00 00 F4 00 00 00 
+    // parsed: offset 624, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 276 (0x000114)
+        01 20 00 00 02 00 00 00 14 01 00 00 
+    // parsed: offset 636, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 328 (0x000148)
+        01 10 00 00 02 00 00 00 48 01 00 00 
+    // parsed: offset 648, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 342 (0x000156)
+        02 20 00 00 0B 00 00 00 56 01 00 00 
+    // parsed: offset 660, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 531 (0x000213)
+        00 20 00 00 01 00 00 00 13 02 00 00 
+    // parsed: offset 672, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 548 (0x000224)
+        00 10 00 00 01 00 00 00 24 02 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d
new file mode 100644
index 0000000..3dd1bcd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_20.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_20
+.super java/lang/Object
+
+.field public static i I
+
+.method static <clinit>()V
+.limit regs 2
+Label0:
+       const/4 v1, 0
+       sput v1, dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_20.i I
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+
+       invoke-interface/range {v3}, dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.java
new file mode 100644
index 0000000..a28964c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_20 {
+
+    public static int i = 0;
+    
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d
new file mode 100644
index 0000000..f8b1b95
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_21.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 9
+
+    const-wide v4, 64
+    move-object v3, v8
+    invoke-interface/range {v3..v5}, dot/junit/opcodes/invoke_interface_range/ITest/testArgsOrder(II)I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.java
new file mode 100644
index 0000000..b26ae98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_21 {
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d
new file mode 100644
index 0000000..3b2a521
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_22.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_22
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v0, dot/junit/opcodes/invoke_interface_range/ITestImpl
+
+       invoke-interface/range {v0}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d
new file mode 100644
index 0000000..ca4948d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_3.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_3
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+Label0:
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.java
new file mode 100644
index 0000000..f39dca5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_3 {
+
+    public T_invoke_interface_range_3 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d
new file mode 100644
index 0000000..8a21324
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_4.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-interface/range {v7}, dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4/test()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.java
new file mode 100644
index 0000000..aa0b9ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+
+public class T_invoke_interface_range_4 {
+    public void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d
new file mode 100644
index 0000000..a0e0905
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_5.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_5
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 2
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+        invoke-interface/range {}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.java
new file mode 100644
index 0000000..cfbcd8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_5 {
+    public T_invoke_interface_range_5(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d
new file mode 100644
index 0000000..13a63d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_7.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doitN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.java
new file mode 100644
index 0000000..82b6c7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_7 {
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d
new file mode 100644
index 0000000..f81692c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_8.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       move-object v6, v8
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d
new file mode 100644
index 0000000..cd73a85
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_9.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface/range {v6}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/TestClass.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/TestClass.java
new file mode 100644
index 0000000..3db9673
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/TestClass.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static;
+
+public class TestClass {
+    
+    public static int test(){
+        return 777;
+    }
+    
+    public static int test1(int i1){
+        int i = i1 + 5;
+        return i;
+    }
+    
+    public static int testArgsOrder(int i1, int i2){
+        int a = 3454;
+        int b = 2302;
+        int i = i1 / i2;
+        return i;
+    }
+    
+    protected static void testProtected() {
+        
+    }
+    
+    
+    private static void testPvt(){
+        
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java
new file mode 100644
index 0000000..c7b77aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java
@@ -0,0 +1,270 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_1;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_13;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_14;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_15;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_17;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_18;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_19;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_2;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_4;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_5;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_6;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_7;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_8;
+
+
+
+public class Test_invoke_static extends DxTestCase {
+
+    /**
+     * @title Static method from library class Math
+     */
+    public void testN1() {
+        T_invoke_static_1 t = new T_invoke_static_1();
+        assertEquals(1234567, t.run());
+    }
+
+    /**
+     * @title Static method from user class
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_2
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        T_invoke_static_2 t = new T_invoke_static_2();
+        assertEquals(777, t.run());
+    }
+
+    /**
+     * @title Check that <clinit> is called
+     */
+    public void testN3() {
+        assertEquals(123456789l, T_invoke_static_4.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_static and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_15
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        T_invoke_static_15 t = new T_invoke_static_15();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Static protected method from other class in the same package
+     */
+    public void testN6() {
+        T_invoke_static_18 t = new T_invoke_static_18();
+        assertEquals(888, t.run());
+    }
+
+    /**
+     * @title Native method can't be linked
+     *
+     */
+    public void testE2() {
+        T_invoke_static_6 t = new T_invoke_static_6();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE7() {
+        T_invoke_static_14 t = new T_invoke_static_14();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A13
+     * @title  invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke-static
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_static
+     */
+    public void testVFE5() {
+        try {
+            new T_invoke_static_19().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call non-static method.
+     */
+    public void testVFE7() {
+         try {
+             new T_invoke_static_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE8() {
+        try {
+            new T_invoke_static_7().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call private method of other class.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_8
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        try {
+            new T_invoke_static_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_13
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        try {
+            new T_invoke_static_13().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B12
+     * @title Attempt to call protected method of unrelated class.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_17
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        try {
+            new T_invoke_static_17().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d
new file mode 100644
index 0000000..04c88aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_1.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.java
new file mode 100644
index 0000000..a6b001f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_1 {
+
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d
new file mode 100644
index 0000000..365afbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_10.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_10
+.super java/lang/Object
+
+
+
+.method static <clinit>()V
+    return-void
+.end method
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/T_invoke_static_10/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d
new file mode 100644
index 0000000..227b52c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_11.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static {}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d
new file mode 100644
index 0000000..2e78a06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_13.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+
+       invoke-static {v1}, dot/junit/opcodes/invoke_static/TestClass/test1(F)I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.java
new file mode 100644
index 0000000..a51532c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d
new file mode 100644
index 0000000..ed2aa2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestClassInitError.java
+.class public dot.junit.opcodes.invoke_static.d.TestClassInitError
+.super java/lang/Object
+
+.method static public <clinit>()V
+.limit regs 2
+
+    const v0, 1
+    const v1, 0
+    div-int v0, v0, v1
+.end method
+
+.method static public test()V
+    return-void
+.end method
+
+.source T_invoke_static_14.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/TestClassInitError/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.java
new file mode 100644
index 0000000..c4efea3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_14 {
+    
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d
new file mode 100644
index 0000000..58bccb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_15.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 6
+
+    const v1, 123
+    const v2, 345
+
+    const v3, 12
+    const v4, 6
+    
+    invoke-static {v3, v4}, dot/junit/opcodes/invoke_static/TestClass/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 2
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 345
+    if-ne v2, v4, Label0
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.java
new file mode 100644
index 0000000..0db7ec5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+import dot.junit.opcodes.invoke_static.TestClass;
+
+public class T_invoke_static_15 {
+    
+    public boolean run(){
+        int i = 123;
+        int j = 345;
+        if(TestClass.testArgsOrder(12, 2) == 6)
+            if(i == 123)
+                if(j == 345)
+                    return true;
+        return false;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d
new file mode 100644
index 0000000..883edbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_16.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static {v3}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d
new file mode 100644
index 0000000..1ce4ed4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_17.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/TestClass/testProtected()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.java
new file mode 100644
index 0000000..194ef10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d
new file mode 100644
index 0000000..7332bce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestProtected.java
+.class public dot.junit.opcodes.invoke_static.d.TestProtected
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method protected static testP()I
+.limit regs 2
+    const v0, 888
+    return v0
+.end method
+
+
+.source T_invoke_static_18.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/TestProtected/testP()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.java
new file mode 100644
index 0000000..776b488
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+class TestProtected {
+    static protected int testP() {
+        return 888;
+    }
+}
+
+public class T_invoke_static_18  {
+    
+    public int run() {
+        return TestProtected.testP();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d
new file mode 100644
index 0000000..e94e2a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_19.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_19
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-static {}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const/4 v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.java
new file mode 100644
index 0000000..1682c92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_19 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d
new file mode 100644
index 0000000..1c53ad3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_2.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/TestClass/test()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.java
new file mode 100644
index 0000000..2e6bfd9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+import dot.junit.opcodes.invoke_static.TestClass;
+
+public class T_invoke_static_2  {
+    
+    public int run() {
+        return TestClass.test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d
new file mode 100644
index 0000000..9ef67a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_20.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const-wide v1, 1
+       invoke-static {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d
new file mode 100644
index 0000000..9a2871f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_static.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_static.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_static.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_static_24.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_24
+.super dot/junit/opcodes/invoke_static/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_static/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-static {v7}, dot/junit/opcodes/invoke_static/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d
new file mode 100644
index 0000000..321761f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_3.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dfh
new file mode 100644
index 0000000..9c4f6eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dfh
@@ -0,0 +1,283 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 13655765
+    65 57 65 13 
+// parsed: offset 12, len 20: signature           : a1e9...1ca1
+    A1 E9 92 EC DD 74 44 53 75 44 CF F1 C4 AF EA F3 CB 80 1C A1 
+// parsed: offset 32, len 4: file_size           : 632
+    78 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 496 (0x0001f0)
+    F0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 240 (0x0000f0)
+    F0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 360
+    68 01 00 00 
+// parsed: offset 108, len 4: data_off            : 272 (0x000110)
+    10 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 404 (0x000194) "Ljava/lang/Math;"
+    94 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 422 (0x0001a6) "Ljava/lang/Object;"
+    A6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 442 (0x0001ba) "T_invoke_static_3.java"
+    BA 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 466 (0x0001d2) "V"
+    D2 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 469 (0x0001d5) "abs"
+    D5 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 474 (0x0001da) "run"
+    DA 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Math;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Ljava/lang/Object;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [4] descriptor_idx: 7 (0x000007) "V"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 172, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 184, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 196, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    07 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 208, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 216, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 9 (0x000009) "run"
+    01 00 00 00 09 00 00 00 
+// parsed: offset 224, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "abs"
+    02 00 01 00 08 00 00 00 
+// parsed: offset 232, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 240, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 6 "T_invoke_static_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 479 (0x0001df)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 DF 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_static.d.T_invoke_static_3.<init>"
+    // parsed: offset 272, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 294, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_static.d.T_invoke_static_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: const v1, #float nan // #0xffed2979 int
+            14 01 79 29 ED FF 
+        // parsed: offset 318, len 6: |0003: invoke-static {v1}, Ljava/lang/Math;.abs:(I)I // method@0002
+//@mod            71 10 02 00 01 00 
+        71 10 02 01 01 00
+        // parsed: offset 324, len 2: |0006: move-result v0
+            0A 00 
+        // parsed: offset 326, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 33 3B 00 
+// parsed: offset 404, len 18: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Math;"
+    10 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4D 61 74 68 3B 00 
+// parsed: offset 422, len 20: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 442, len 24: TYPE_STRING_DATA_ITEM [6] "T_invoke_static_3.java"
+    16 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 466, len 3: TYPE_STRING_DATA_ITEM [7] "V"
+    01 56 00 
+// parsed: offset 469, len 5: TYPE_STRING_DATA_ITEM [8] "abs"
+    03 61 62 73 00 
+// parsed: offset 474, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    // parsed: offset 479, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 480, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 481, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 482, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 483, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 484, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 487, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 489, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 490, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 491, len 2: code_off: 296 (0x000128)
+                A8 02 
+// parsed: offset 493, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 496, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 500, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 512, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 524, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 152 (0x000098)
+        02 00 00 00 05 00 00 00 98 00 00 00 
+    // parsed: offset 536, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        03 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 548, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 208 (0x0000d0)
+        05 00 00 00 04 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 240 (0x0000f0)
+        06 00 00 00 01 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 272 (0x000110)
+        01 20 00 00 02 00 00 00 10 01 00 00 
+    // parsed: offset 584, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 596, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 334 (0x00014e)
+        02 20 00 00 0A 00 00 00 4E 01 00 00 
+    // parsed: offset 608, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 479 (0x0001df)
+        00 20 00 00 01 00 00 00 DF 01 00 00 
+    // parsed: offset 620, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 496 (0x0001f0)
+        00 10 00 00 01 00 00 00 F0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d
new file mode 100644
index 0000000..4212854
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_4.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_4
+.super java/lang/Object
+
+.field static val J
+
+.method static <clinit>()V
+.limit regs 2
+
+       const-wide/32 v0, 123456789
+       sput-wide v0, dot.junit.opcodes.invoke_static.d.T_invoke_static_4.val J
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 4
+Label0:
+       sget-wide v2, dot.junit.opcodes.invoke_static.d.T_invoke_static_4.val J
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.java
new file mode 100644
index 0000000..c9e1dd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_4 {
+
+    static long val = 123456789l;
+
+    public static long run() {
+        return val;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d
new file mode 100644
index 0000000..a3c8c91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_5.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 5
+       invoke-static {v2}, dot/junit/opcodes/invoke_static/d/T_invoke_static_5/test(I)I
+       move-result v0
+       return v0
+.end method
+
+.method public test(I)I
+.limit regs 5
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.java
new file mode 100644
index 0000000..ace37b8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_5 {
+    public int run() {
+        return 0;
+    }
+    public int test(int i) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d
new file mode 100644
index 0000000..969e499
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_6.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static native test()V
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/T_invoke_static_6/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.java
new file mode 100644
index 0000000..1cdffb1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_6 {
+
+    public static native void test();
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d
new file mode 100644
index 0000000..b58d3b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_7.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/T_invoke_static_7/testN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.java
new file mode 100644
index 0000000..55a2327
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_7 {
+    public static void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d
new file mode 100644
index 0000000..9a4d964
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_8.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+       invoke-static {}, dot/junit/opcodes/invoke_static/TestClass/testPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.java
new file mode 100644
index 0000000..61acbc9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/TestClass.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/TestClass.java
new file mode 100644
index 0000000..90f65a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/TestClass.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range;
+
+public class TestClass {
+    
+    public static int test(){
+        return 777;
+    }
+    
+    public static int test1(int i1){
+        int i = i1 + 5;
+        return i;
+    }
+    
+    public static int testArgsOrder(int i1, int i2){
+        int a = 3454;
+        int b = 2302;
+        int i = i1 / i2;
+        return i;
+    }
+    
+    protected static void testProtected() {
+        
+    }
+    
+    
+    private static void testPvt(){
+        
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java
new file mode 100644
index 0000000..c62b333
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java
@@ -0,0 +1,269 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_1;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_13;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_14;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_15;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_17;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_18;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_19;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_2;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_4;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_5;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_6;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_7;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_8;
+
+
+
+public class Test_invoke_static_range extends DxTestCase {
+
+    /**
+     * @title Static method from library class Math
+     */
+    public void testN1() {
+        T_invoke_static_range_1 t = new T_invoke_static_range_1();
+        assertEquals(1234567, t.run());
+    }
+
+    /**
+     * @title Static method from user class
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_2
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        T_invoke_static_range_2 t = new T_invoke_static_range_2();
+        assertEquals(777, t.run());
+    }
+
+    /**
+     * @title Big number of registers
+     */
+    public void testN3() {
+        assertEquals(1, T_invoke_static_range_4.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_static_range and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_15
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        T_invoke_static_range_15 t = new T_invoke_static_range_15();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Static protected method from other class in the same package
+     */
+    public void testN6() {
+        T_invoke_static_range_18 t = new T_invoke_static_range_18();
+        assertEquals(888, t.run());
+    }
+
+    /**
+     * @title Native method can't be linked
+     *
+     */
+    public void testE2() {
+        T_invoke_static_range_6 t = new T_invoke_static_range_6();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE7() {
+        T_invoke_static_range_14 t = new T_invoke_static_range_14();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke_static_range
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_static_range
+     */
+    public void testVFE5() {
+        try {
+            new T_invoke_static_range_19().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call non-static method.
+     */
+    public void testVFE7() {
+         try {
+             new T_invoke_static_range_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE8() {
+        try {
+            new T_invoke_static_range_7().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call private method of other class.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_8
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        try {
+            new T_invoke_static_range_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_13
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        try {
+            new T_invoke_static_range_13().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B12
+     * @title Attempt to call protected method of unrelated class.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_17
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        try {
+            new T_invoke_static_range_17().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d
new file mode 100644
index 0000000..1f8dac7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_1.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static/range {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.java
new file mode 100644
index 0000000..e95213e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_1 {
+
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d
new file mode 100644
index 0000000..994973f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_10.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_10
+.super java/lang/Object
+
+
+
+.method static <clinit>()V
+    return-void
+.end method
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d
new file mode 100644
index 0000000..2b7131f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_11.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static/range {}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d
new file mode 100644
index 0000000..dca327b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_13.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+
+       invoke-static/range {v1}, dot/junit/opcodes/invoke_static_range/TestClass/test1(F)I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.java
new file mode 100644
index 0000000..b3278c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d
new file mode 100644
index 0000000..e4c1bd3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestClassInitError.java
+.class public dot.junit.opcodes.invoke_static_range.d.TestClassInitError
+.super java/lang/Object
+
+.method static public <clinit>()V
+.limit regs 2
+
+    const v0, 1
+    const v1, 0
+    div-int v0, v0, v1
+.end method
+
+.method static public test()V
+    return-void
+.end method
+
+.source T_invoke_static_range_14.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/TestClassInitError/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.java
new file mode 100644
index 0000000..b5b135b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_14 {
+    
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d
new file mode 100644
index 0000000..c56d3c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_15.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 6
+
+    const v1, 123
+    const v2, 345
+
+    const v3, 12
+    const v4, 6
+    
+    invoke-static/range {v3..v4}, dot/junit/opcodes/invoke_static_range/TestClass/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 2
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 345
+    if-ne v2, v4, Label0
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.java
new file mode 100644
index 0000000..696de4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+import dot.junit.opcodes.invoke_static_range.TestClass;
+
+public class T_invoke_static_range_15 {
+    
+    public boolean run(){
+        int i = 123;
+        int j = 345;
+        if(TestClass.testArgsOrder(12, 2) == 6)
+            if(i == 123)
+                if(j == 345)
+                    return true;
+        return false;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d
new file mode 100644
index 0000000..c66089b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_16.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static/range {v3}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d
new file mode 100644
index 0000000..b2ce948
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_17.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/TestClass/testProtected()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.java
new file mode 100644
index 0000000..4b020b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d
new file mode 100644
index 0000000..19fec09
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestProtected.java
+.class public dot.junit.opcodes.invoke_static_range.d.TestProtected
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method protected static testP()I
+.limit regs 2
+    const v0, 888
+    return v0
+.end method
+
+
+.source T_invoke_static_range_18.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/TestProtected/testP()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.java
new file mode 100644
index 0000000..34d0098
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+class TestProtected {
+    static protected int testP() {
+        return 888;
+    }
+}
+
+public class T_invoke_static_range_18  {
+    
+    public int run() {
+        return TestProtected.testP();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d
new file mode 100644
index 0000000..051df3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_19.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_19
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-static/range {}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const/4 v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.java
new file mode 100644
index 0000000..204e39a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_19 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d
new file mode 100644
index 0000000..67e9a13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_2.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/TestClass/test()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.java
new file mode 100644
index 0000000..eb5f3c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+import dot.junit.opcodes.invoke_static_range.TestClass;
+
+public class T_invoke_static_range_2  {
+    
+    public int run() {
+        return TestClass.test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d
new file mode 100644
index 0000000..5819881
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_20.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const-wide v1, 1
+       invoke-static/range {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d
new file mode 100644
index 0000000..6ee8671
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_static_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_static_range.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_static_range.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_static_range_24.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_24
+.super dot/junit/opcodes/invoke_static_range/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_static_range/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-static/range {v7}, dot/junit/opcodes/invoke_static_range/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d
new file mode 100644
index 0000000..b3734a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_3.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static/range {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dfh
new file mode 100644
index 0000000..624ef70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dfh
@@ -0,0 +1,283 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4c3e5bf7
+    F7 5B 3E 4C 
+// parsed: offset 12, len 20: signature           : be81...32a4
+    BE 81 F4 E7 AE A6 FA EE 02 66 A3 DF 71 03 38 38 F6 56 32 A4 
+// parsed: offset 32, len 4: file_size           : 648
+    88 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 512 (0x000200)
+    00 02 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 240 (0x0000f0)
+    F0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 272 (0x000110)
+    10 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Math;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 434 (0x0001b2) "Ljava/lang/Object;"
+    B2 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 454 (0x0001c6) "T_invoke_static_range_3.java"
+    C6 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 484 (0x0001e4) "V"
+    E4 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 487 (0x0001e7) "abs"
+    E7 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 492 (0x0001ec) "run"
+    EC 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Math;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Ljava/lang/Object;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [4] descriptor_idx: 7 (0x000007) "V"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 172, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 184, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 196, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    07 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 208, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 216, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 9 (0x000009) "run"
+    01 00 00 00 09 00 00 00 
+// parsed: offset 224, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "abs"
+    02 00 01 00 08 00 00 00 
+// parsed: offset 232, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 240, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 6 "T_invoke_static_range_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 497 (0x0001f1)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 F1 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3.<init>"
+    // parsed: offset 272, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 294, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: const v1, #float nan // #0xffed2979 int
+            14 01 79 29 ED FF 
+        // parsed: offset 318, len 6: |0003: invoke-static/range {v1..v1}, Ljava/lang/Math;.abs:(I)I // method@0002
+//@mod            77 01 02 00 01 00 
+            77 01 02 01 01 00 
+        // parsed: offset 324, len 2: |0006: move-result v0
+            0A 00 
+        // parsed: offset 326, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 67: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    41 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 72 61 6E 67 65 5F 33 3B 00 
+// parsed: offset 416, len 18: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Math;"
+    10 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4D 61 74 68 3B 00 
+// parsed: offset 434, len 20: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 454, len 30: TYPE_STRING_DATA_ITEM [6] "T_invoke_static_range_3.java"
+    1C 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 72 61 6E 67 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 484, len 3: TYPE_STRING_DATA_ITEM [7] "V"
+    01 56 00 
+// parsed: offset 487, len 5: TYPE_STRING_DATA_ITEM [8] "abs"
+    03 61 62 73 00 
+// parsed: offset 492, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    // parsed: offset 497, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 498, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 499, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 500, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 501, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 502, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 505, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 507, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 508, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 509, len 2: code_off: 296 (0x000128)
+                A8 02 
+// parsed: offset 511, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 512, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 516, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 528, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 540, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 152 (0x000098)
+        02 00 00 00 05 00 00 00 98 00 00 00 
+    // parsed: offset 552, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        03 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 564, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 208 (0x0000d0)
+        05 00 00 00 04 00 00 00 D0 00 00 00 
+    // parsed: offset 576, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 240 (0x0000f0)
+        06 00 00 00 01 00 00 00 F0 00 00 00 
+    // parsed: offset 588, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 272 (0x000110)
+        01 20 00 00 02 00 00 00 10 01 00 00 
+    // parsed: offset 600, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 612, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 334 (0x00014e)
+        02 20 00 00 0A 00 00 00 4E 01 00 00 
+    // parsed: offset 624, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 497 (0x0001f1)
+        00 20 00 00 01 00 00 00 F1 01 00 00 
+    // parsed: offset 636, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 512 (0x000200)
+        00 10 00 00 01 00 00 00 00 02 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d
new file mode 100644
index 0000000..c07542c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d
@@ -0,0 +1,75 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_4.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private static test(IIIIIIIIII)I
+.limit regs 11
+    const v0, 10
+    if-ne v0, v10, Label0
+    const v0, 9
+    if-ne v0, v9, Label0
+    const v0, 8
+    if-ne v0, v8, Label0
+    const v0, 7
+    if-ne v0, v7, Label0
+    const v0, 6
+    if-ne v0, v6, Label0
+    const v0, 5
+    if-ne v0, v5, Label0
+    const v0, 4
+    if-ne v0, v4, Label0
+    const v0, 3
+    if-ne v0, v3, Label0
+    const v0, 2
+    if-ne v0, v2, Label0
+    const v0, 1
+    if-ne v0, v1, Label0
+
+    const v0, 1
+    return v0
+Label0:
+    const v0, 0
+    return v0
+
+.end method
+
+.method public static run()I
+.limit regs 16
+         const v1, 1
+          const v2, 2
+          const v3, 3
+          const v4, 4
+          const v5, 5
+          const v6, 6
+          const v7, 7
+          const v8, 8
+          const v9, 9
+          const v10, 10
+
+       invoke-static/range {v1..v10}, dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_4/test(IIIIIIIIII)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.java
new file mode 100644
index 0000000..9f91e19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_4 {
+
+
+    public static int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d
new file mode 100644
index 0000000..14cbfd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_5.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 5
+       invoke-static/range {v2}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5/test(I)I
+       move-result v0
+       return v0
+.end method
+
+.method public test(I)I
+.limit regs 5
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.java
new file mode 100644
index 0000000..3e1f9cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_5 {
+    public int run() {
+        return 0;
+    }
+    public int test(int i) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d
new file mode 100644
index 0000000..a739336
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_6.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static native test()V
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.java
new file mode 100644
index 0000000..ab00d04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_6 {
+
+    public static native void test();
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d
new file mode 100644
index 0000000..a7615ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_7.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7/testN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.java
new file mode 100644
index 0000000..5e81cca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_7 {
+    public static void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d
new file mode 100644
index 0000000..a494912
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_8.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/TestClass/testPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.java
new file mode 100644
index 0000000..ac8e6c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/ATest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/ATest.java
new file mode 100644
index 0000000..af69eaf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/TestStubs.java
new file mode 100644
index 0000000..28fc156
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java
new file mode 100644
index 0000000..6efac8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java
@@ -0,0 +1,349 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_1;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_10;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_14;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_15;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_17;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_18;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_19;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_2;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_20;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_4;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_5;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_6;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_7;
+
+public class Test_invoke_super extends DxTestCase {
+
+    /**
+     * @title invoke method of superclass
+     */
+    public void testN1() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_1
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_1 t = new T_invoke_super_1();
+        assertEquals(5, t.run());
+    }
+
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_7
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_7 t = new T_invoke_super_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_super and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_14
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_14 t = new T_invoke_super_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_17
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper2
+        T_invoke_super_17 t = new T_invoke_super_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title obj ref is null
+     */
+    public void testE1() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_1
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_2 t = new T_invoke_super_2();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_4
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_4 t = new T_invoke_super_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_6
+        //@uses dot.junit.opcodes.invoke_super.ATest
+        T_invoke_super_6 t = new T_invoke_super_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke-super
+     */
+    public void testVFE3() {
+        try {
+            new T_invoke_super_10().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method.
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_12
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_super
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_22
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_23
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper2
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_5
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             new T_invoke_super_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method.
+     */
+    public void testVFE12() {
+         try {
+             new T_invoke_super_15().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_18
+        //@uses dot.junit.opcodes.invoke_super.TestStubs
+         try {
+             new T_invoke_super_18().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_20
+        //@uses dot.junit.opcodes.invoke_super.TestStubs
+         try {
+             new T_invoke_super_20().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_19
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             new T_invoke_super_19().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title invoke-super shall be used to invoke private methods
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_13
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_25
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_25");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.d
new file mode 100644
index 0000000..5eaf417
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_super.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.d
new file mode 100644
index 0000000..c7993b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_super.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
+
+.method public testString(Ljava/lang/String;)V
+.limit regs 2
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.java
new file mode 100644
index 0000000..7767485
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class TSuper {
+
+    public int toInt() {
+        return 0;
+    }
+
+    public int toInt(float f) {
+        return 0;
+    }
+
+    public native int toIntNative();
+
+    public static int toIntStatic() {
+        return 0;
+    }
+
+    protected int toIntP() {
+        return 0;
+    }
+
+    private int toIntPvt() {
+        return 0;
+    }
+
+    public int testArgsOrder(int arg1, int arg2) {
+        return 0;
+    }
+
+    public void testString(String s) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.d
new file mode 100644
index 0000000..b74842f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_super.d.TSuper2
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d
new file mode 100644
index 0000000..829c67f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_1.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_1
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+
+       invoke-super {v7}, dot/junit/opcodes/invoke_super/d/T_invoke_super_1/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.java
new file mode 100644
index 0000000..2c1f61d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_1{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d
new file mode 100644
index 0000000..bc38f2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_10.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-super {v0}, dot.junit.opcodes.invoke_super.d.T_invoke_super_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.java
new file mode 100644
index 0000000..76fff9d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d
new file mode 100644
index 0000000..97683ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_11.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d
new file mode 100644
index 0000000..0b6efa2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_12.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_12
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 8
+
+       invoke-super {v5, v5}, dot.junit.opcodes.invoke_super.d.T_invoke_super_12/testString(Ljava/lang/String;)V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d
new file mode 100644
index 0000000..a030b72
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_13.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_13
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method private toIntPvt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_13/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d
new file mode 100644
index 0000000..b70f691
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_14.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_14
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v3, 300
+    const v4, 3
+
+    invoke-super {v6, v3, v4}, dot/junit/opcodes/invoke_super/d/T_invoke_super_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 0
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.java
new file mode 100644
index 0000000..7dfcf14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+    
+public class T_invoke_super_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d
new file mode 100644
index 0000000..32c2700
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_15.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_15/testN()V
+       return-void
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.java
new file mode 100644
index 0000000..f3e30f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d
new file mode 100644
index 0000000..92f6c2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_16.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-super {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d
new file mode 100644
index 0000000..de24bf3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_17.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_17
+.super dot/junit/opcodes/invoke_super/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.java
new file mode 100644
index 0000000..cb68374
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+    
+public class T_invoke_super_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d
new file mode 100644
index 0000000..e3d61e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_18.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super/TestStubs;)V
+.limit regs 5
+
+       invoke-super {v4}, dot/junit/opcodes/invoke_super/TestStubs/TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.java
new file mode 100644
index 0000000..9c256a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+import dot.junit.opcodes.invoke_super.TestStubs;
+
+public class T_invoke_super_18 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d
new file mode 100644
index 0000000..847e743
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_19.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_19
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 1
+       invoke-super {v3, v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.java
new file mode 100644
index 0000000..15256e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_19 extends TSuper {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d
new file mode 100644
index 0000000..0144130
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_2.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_2
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+       const v7, 0    
+       invoke-super {v7}, dot/junit/opcodes/invoke_super/d/T_invoke_super_2/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.java
new file mode 100644
index 0000000..474115a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_2{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d
new file mode 100644
index 0000000..eb429ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_20.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super/TestStubs;)V
+.limit regs 5
+
+       invoke-super {v4}, dot/junit/opcodes/invoke_super/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.java
new file mode 100644
index 0000000..2ae592e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+import dot.junit.opcodes.invoke_super.TestStubs;
+
+public class T_invoke_super_20 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d
new file mode 100644
index 0000000..fbeb8e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_22.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_22
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super/d/TPlain/<init>()V
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d
new file mode 100644
index 0000000..f1d2a6f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_23.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_23
+.super dot/junit/opcodes/invoke_super/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d
new file mode 100644
index 0000000..55303d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_super.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_super.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_super.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_super_24.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_24
+.super dot/junit/opcodes/invoke_super/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-super {v7}, dot/junit/opcodes/invoke_super/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d
new file mode 100644
index 0000000..f6e763c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_25.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_25
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 4
+
+       new-instance v3, dot/junit/opcodes/invoke_super/d/T_invoke_super_25
+       invoke-super {v3}, dot/junit/opcodes/invoke_super/d/T_invoke_super_25/toInt()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d
new file mode 100644
index 0000000..3f80ff8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_4.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_4
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_4/toIntNative()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.java
new file mode 100644
index 0000000..316909f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d
new file mode 100644
index 0000000..af16744
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_5.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_5
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/TSuper/toIntStatic()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.java
new file mode 100644
index 0000000..c633829
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_5 extends TSuper {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d
new file mode 100644
index 0000000..94361b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_6.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_6
+.super dot/junit/opcodes/invoke_super/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.java
new file mode 100644
index 0000000..47cf76f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+import dot.junit.opcodes.invoke_super.ATest;
+
+public class T_invoke_super_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d
new file mode 100644
index 0000000..a62a1e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_7.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_7
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.java
new file mode 100644
index 0000000..2f45567
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+    
+public class T_invoke_super_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d
new file mode 100644
index 0000000..48e9bdd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_8.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dfh
new file mode 100644
index 0000000..8501c68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e6b95367
+    67 53 B9 E6 
+// parsed: offset 12, len 20: signature           : 1f59...4982
+    1F 59 10 CB D9 05 57 DD FD 89 AE 82 F3 40 87 4D 92 7E 49 82 
+// parsed: offset 32, len 4: file_size           : 592
+    50 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 344
+    58 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 362 (0x00016a) "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    6A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 415 (0x00019f) "T_invoke_super_8.java"
+    9F 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 438 (0x0001b6) "V"
+    B6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 441 (0x0001b9) "run"
+    B9 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 446 (0x0001be) "toInt"
+    BE 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "toInt"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+// parsed: offset 208, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    02 00 00 00 06 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 2 "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_invoke_super_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    02 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_super.d.T_invoke_super_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 264, len 2: |0000: move-object v0, v2
+            07 20 
+        // parsed: offset 266, len 2: |0001: move-object v1, v0
+            07 01 
+        // parsed: offset 268, len 6: |0002: invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;.<init>:()V // method@0000
+            70 10 00 00 01 00 
+        // parsed: offset 274, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_super.d.T_invoke_super_8.run"
+    // parsed: offset 276, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 278, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 280, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 282, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 284, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 288, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 292, len 2: |0000: move-object v0, v2
+            07 20 
+        // parsed: offset 294, len 2: |0001: const/4 v1, #int 0 // #0x0
+            12 01 
+        // parsed: offset 296, len 6: |0002: invoke-super {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;.toInt:()I // method@0001
+//@mod            6F 10 01 00 01 00 
+            6F 10 01 01 01 00 
+        // parsed: offset 302, len 2: |0005: move-result v1
+            0A 01 
+        // parsed: offset 304, len 2: |0006: move v0, v1
+            01 10 
+        // parsed: offset 306, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 43: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 2F 64 2F 54 53 75 70 65 72 3B 00 
+// parsed: offset 362, len 53: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 38 3B 00 
+// parsed: offset 415, len 23: TYPE_STRING_DATA_ITEM [4] "T_invoke_super_8.java"
+    15 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 438, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 441, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 446, len 7: TYPE_STRING_DATA_ITEM [7] "toInt"
+    05 74 6F 49 6E 74 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 2 (method_idx: 2 "<init>")
+                02 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 3 (method_idx: 3 "run")
+                03 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 276 (0x000114)
+                94 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 04 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 308 (0x000134)
+        02 20 00 00 08 00 00 00 34 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d
new file mode 100644
index 0000000..79626b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_9.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super {v8, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/ATest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/ATest.java
new file mode 100644
index 0000000..20e9c5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/TestStubs.java
new file mode 100644
index 0000000..22b5046
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java
new file mode 100644
index 0000000..d65b8d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java
@@ -0,0 +1,350 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_10;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_14;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_15;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_17;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_18;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_19;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_2;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_20;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_4;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_5;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_6;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_7;
+
+public class Test_invoke_super_range extends DxTestCase {
+
+    /**
+     * @title invoke method of superclass
+     */
+    public void testN1() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_1 t = new T_invoke_super_range_1();
+        assertEquals(5, t.run());
+    }
+
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_7
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_7 t = new T_invoke_super_range_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_super_range and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_14
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_14 t = new T_invoke_super_range_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_17
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper2
+        T_invoke_super_range_17 t = new T_invoke_super_range_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title obj ref is null
+     */
+    public void testE1() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_2 t = new T_invoke_super_range_2();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_4
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_4 t = new T_invoke_super_range_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_6
+        //@uses dot.junit.opcodes.invoke_super_range.ATest
+        T_invoke_super_range_6 t = new T_invoke_super_range_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke-super
+     */
+    public void testVFE3() {
+        try {
+            new T_invoke_super_range_10().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method.
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_super_range
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_22
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super_range.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_23
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper2
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_5
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             new T_invoke_super_range_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method.
+     */
+    public void testVFE12() {
+         try {
+             new T_invoke_super_range_15().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_18
+        //@uses dot.junit.opcodes.invoke_super_range.TestStubs
+         try {
+             new T_invoke_super_range_18().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_20
+        //@uses dot.junit.opcodes.invoke_super_range.TestStubs
+         try {
+             new T_invoke_super_range_20().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_19
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             new T_invoke_super_range_19().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title invoke-super/range shall be used to invoke private methods
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_13
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_25
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_25");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d
new file mode 100644
index 0000000..ba9512e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_super_range.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d
new file mode 100644
index 0000000..e9d0ff1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_super_range.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
+
+.method public testString(Ljava/lang/String;)V
+.limit regs 2
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.java
new file mode 100644
index 0000000..004b573
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class TSuper {
+
+    public int toInt() {
+        return 0;
+    }
+
+    public int toInt(float f) {
+        return 0;
+    }
+
+    public native int toIntNative();
+
+    public static int toIntStatic() {
+        return 0;
+    }
+
+    protected int toIntP() {
+        return 0;
+    }
+
+    private int toIntPvt() {
+        return 0;
+    }
+
+    public int testArgsOrder(int arg1, int arg2) {
+        return 0;
+    }
+
+    public void testString(String s) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d
new file mode 100644
index 0000000..90baf5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_super_range.d.TSuper2
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d
new file mode 100644
index 0000000..4181eed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_1.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+
+       invoke-super/range {v7}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.java
new file mode 100644
index 0000000..0844d80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_1{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d
new file mode 100644
index 0000000..baca689
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_10.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-super/range {v0}, dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.java
new file mode 100644
index 0000000..3ff5490
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d
new file mode 100644
index 0000000..7cc537c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_11.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super/range {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d
new file mode 100644
index 0000000..38cd7d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_12.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 8
+       move-object v4, v5
+       invoke-super/range {v4..v5}, dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12/testString(Ljava/lang/String;)V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d
new file mode 100644
index 0000000..d177e76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_13.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_13
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method private toIntPvt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d
new file mode 100644
index 0000000..c90b576
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_14.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_14
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v4, 300
+    const v5, 3
+    move-object v3, v6
+    invoke-super/range {v3..v5}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 0
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.java
new file mode 100644
index 0000000..32af085
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+    
+public class T_invoke_super_range_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d
new file mode 100644
index 0000000..7c57710
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_15.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15/testN()V
+       return-void
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.java
new file mode 100644
index 0000000..dfd335a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_15 extends TSuper {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d
new file mode 100644
index 0000000..90d9a21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_16.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-super/range {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d
new file mode 100644
index 0000000..962adb5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_17.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_17
+.super dot/junit/opcodes/invoke_super_range/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.java
new file mode 100644
index 0000000..5d87c2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+    
+public class T_invoke_super_range_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d
new file mode 100644
index 0000000..709fad6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_18.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super_range/TestStubs;)V
+.limit regs 5
+
+       invoke-super/range {v4}, dot/junit/opcodes/invoke_super_range/TestStubs/TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.java
new file mode 100644
index 0000000..fec68ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+import dot.junit.opcodes.invoke_super_range.TestStubs;
+
+public class T_invoke_super_range_18 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d
new file mode 100644
index 0000000..d30cc05
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_19.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_19
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       move-object v0, v3
+       const/4 v1, 1
+       invoke-super/range {v0, v1}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.java
new file mode 100644
index 0000000..d359454
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+
+public class T_invoke_super_range_19 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d
new file mode 100644
index 0000000..b8c9051
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_2.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_2
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+       const v7, 0    
+       invoke-super/range {v7}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.java
new file mode 100644
index 0000000..c9a5f0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_2{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d
new file mode 100644
index 0000000..7ea46f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_20.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super_range/TestStubs;)V
+.limit regs 5
+
+       invoke-super/range {v4}, dot/junit/opcodes/invoke_super_range/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.java
new file mode 100644
index 0000000..2e9724c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+import dot.junit.opcodes.invoke_super_range.TestStubs;
+
+public class T_invoke_super_range_20 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d
new file mode 100644
index 0000000..efe22e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_22.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_22
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super_range/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super_range/d/TPlain/<init>()V
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d
new file mode 100644
index 0000000..5877042
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_23.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_23
+.super dot/junit/opcodes/invoke_super_range/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super_range/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d
new file mode 100644
index 0000000..dcc399d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_super_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_super_range.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_super_range.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_super_range_24.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_24
+.super dot/junit/opcodes/invoke_super_range/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-super/range {v7}, dot/junit/opcodes/invoke_super_range/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d
new file mode 100644
index 0000000..1a9d17a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_25.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_25
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 4
+
+       new-instance v3, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25
+       invoke-super/range {v3}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25/toInt()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d
new file mode 100644
index 0000000..eb1a1f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_4.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_4
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4/toIntNative()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.java
new file mode 100644
index 0000000..d9b6b9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d
new file mode 100644
index 0000000..bf38cab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_5.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_5
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper/toIntStatic()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.java
new file mode 100644
index 0000000..aa448e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_5 extends TSuper {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d
new file mode 100644
index 0000000..bb9161c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_6.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_6
+.super dot/junit/opcodes/invoke_super_range/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.java
new file mode 100644
index 0000000..64229eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+import dot.junit.opcodes.invoke_super_range.ATest;
+
+public class T_invoke_super_range_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d
new file mode 100644
index 0000000..f170aac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_7.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_7
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.java
new file mode 100644
index 0000000..d09e351
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+    
+public class T_invoke_super_range_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d
new file mode 100644
index 0000000..ed4d3ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_8.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+     
+       invoke-super/range {v6..v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dfh
new file mode 100644
index 0000000..3b8efa1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dfh
@@ -0,0 +1,288 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 677c55cc
+    CC 55 7C 67 
+// parsed: offset 12, len 20: signature           : c17c...13a7
+    C1 7C 21 3E 4F CA 1A 28 AD C6 6A 29 3E DE 7A A7 DC B7 13 A7 
+// parsed: offset 32, len 4: file_size           : 636
+    7C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 500 (0x0001f4)
+    F4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 336 (0x000150) "<init>"
+    50 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 344 (0x000158) "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    58 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 409 (0x000199) "Ljava/lang/Object;"
+    99 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 429 (0x0001ad) "T_invoke_super_range_8.java"
+    AD 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 458 (0x0001ca) "V"
+    CA 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 461 (0x0001cd) "Z"
+    CD 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 464 (0x0001d0) "ZL"
+    D0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 468 (0x0001d4) "ZLL"
+    D4 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 473 (0x0001d9) "equals"
+    D9 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 481 (0x0001e1) "run"
+    E1 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "ZL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 320 (0x000140)
+    06 00 00 00 03 00 00 00 40 01 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "ZLL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 328 (0x000148)
+    07 00 00 00 03 00 00 00 48 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 2 (0x000002) name_idx: 9 (0x000009) "run"
+    00 00 02 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "equals"
+    01 00 01 00 08 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_invoke_super_range_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 486 (0x0001e6)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 E6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8.<init>"
+    // parsed: offset 268, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 01 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8.run"
+    // parsed: offset 292, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 294, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 308, len 6: |0000: invoke-super/range {v6..v7}, Ljava/lang/Object;.equals:(Ljava/lang/Object;)Z // method@0003
+//@mod            75 02 03 00 06 00 
+            75 02 03 01 06 00 
+        // parsed: offset 314, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 316, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 318, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 320, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 324, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 1
+        01 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 1
+        01 00 
+// parsed: offset 336, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 344, len 65: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    3F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 72 61 6E 67 65 5F 38 3B 00 
+// parsed: offset 409, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 429, len 29: TYPE_STRING_DATA_ITEM [3] "T_invoke_super_range_8.java"
+    1B 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 72 61 6E 67 65 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 458, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 461, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 464, len 4: TYPE_STRING_DATA_ITEM [6] "ZL"
+    02 5A 4C 00 
+// parsed: offset 468, len 5: TYPE_STRING_DATA_ITEM [7] "ZLL"
+    03 5A 4C 4C 00 
+// parsed: offset 473, len 8: TYPE_STRING_DATA_ITEM [8] "equals"
+    06 65 71 75 61 6C 73 00 
+// parsed: offset 481, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    // parsed: offset 486, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 487, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 488, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 489, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 490, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 491, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 494, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 496, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 497, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 498, len 2: code_off: 292 (0x000124)
+                A4 02 
+// map_list:
+    // parsed: offset 500, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 504, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 516, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 528, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 540, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 552, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 564, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 576, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 588, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 320 (0x000140)
+        01 10 00 00 02 00 00 00 40 01 00 00 
+    // parsed: offset 600, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 336 (0x000150)
+        02 20 00 00 0A 00 00 00 50 01 00 00 
+    // parsed: offset 612, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 486 (0x0001e6)
+        00 20 00 00 01 00 00 00 E6 01 00 00 
+    // parsed: offset 624, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 500 (0x0001f4)
+        00 10 00 00 01 00 00 00 F4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d
new file mode 100644
index 0000000..e97d513
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_9.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super/range {v7..v8}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/ATest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/ATest.java
new file mode 100644
index 0000000..f102992
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/TestStubs.java
new file mode 100644
index 0000000..e495f54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java
new file mode 100644
index 0000000..6e41ec1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java
@@ -0,0 +1,340 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_1;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_10;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_14;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_15;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_17;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_18;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_19;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_20;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_4;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_5;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_6;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_7;
+
+public class Test_invoke_virtual extends DxTestCase {
+
+    /**
+     * @title invoke virtual method
+     */
+    public void testN1() {
+        T_invoke_virtual_1 t = new T_invoke_virtual_1();
+        int a = 1;
+        String sa = "a" + a;
+        String sb = "a1";
+        assertTrue(t.run(sa, sb));
+        assertFalse(t.run(t, sa));
+        assertFalse(t.run(sb, t));
+    }
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_7
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        T_invoke_virtual_7 t = new T_invoke_virtual_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_virtual and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_14
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        T_invoke_virtual_14 t = new T_invoke_virtual_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_17
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        T_invoke_virtual_17 t = new T_invoke_virtual_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_invoke_virtual_1 t = new T_invoke_virtual_1();
+        String s = "s";
+        try {
+            t.run(null, s);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        T_invoke_virtual_4 t = new T_invoke_virtual_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_6
+        //@uses dot.junit.opcodes.invoke_virtual.ATest
+        T_invoke_virtual_6 t = new T_invoke_virtual_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke-virtual
+     */
+    public void testVFE3() {
+        try {
+            new T_invoke_virtual_10().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_virtual
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_22
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_23
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper2
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method.
+     */
+    public void testVFE10() {
+         try {
+             new T_invoke_virtual_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method.
+     */
+    public void testVFE12() {
+         try {
+             new T_invoke_virtual_15().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_18
+        //@uses dot.junit.opcodes.invoke_virtual.TestStubs
+         try {
+             new T_invoke_virtual_18().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_20
+        //@uses dot.junit.opcodes.invoke_virtual.TestStubs
+         try {
+             new T_invoke_virtual_20().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_19
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+         try {
+             new T_invoke_virtual_19().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title invoke-virtual shall be used to invoke private methods
+     */
+    public void testVFE16() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE19() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d
new file mode 100644
index 0000000..f0328ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_virtual.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d
new file mode 100644
index 0000000..3b7a591
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_virtual.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.java
new file mode 100644
index 0000000..eb0b27a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+public class TSuper {
+
+    public int toInt() {
+        return 0;
+    }
+
+    public int toInt(float value) {
+        return 0;
+    }
+
+    public native int toIntNative();
+
+    public static int toIntStatic() {
+        return 0;
+    }
+
+    protected int toIntP() {
+        return 0;
+    }
+
+    private int toIntPvt() {
+        return 0;
+    }
+
+    public int testArgsOrder(int arg1, int arg2) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d
new file mode 100644
index 0000000..2137c4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_virtual.d.TSuper2
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d
new file mode 100644
index 0000000..3192c0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_1.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.java
new file mode 100644
index 0000000..f242600
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_1 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d
new file mode 100644
index 0000000..2c5c909
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_10.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-virtual {v0}, dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.java
new file mode 100644
index 0000000..24898f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d
new file mode 100644
index 0000000..68ca8c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_11.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d
new file mode 100644
index 0000000..02d509a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_12.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test(Ljava/lang/String;)V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v5, v7}, dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_12/test(Ljava/lang/String;)V
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d
new file mode 100644
index 0000000..dcf28f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_13.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d
new file mode 100644
index 0000000..743ddf4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_14.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_14
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v3, 300
+    const v4, 3
+
+    invoke-virtual {v6, v3, v4}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.java
new file mode 100644
index 0000000..d0a8d40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+    
+public class T_invoke_virtual_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d
new file mode 100644
index 0000000..ad196c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_15.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15/testN()V
+       return-void
+.end method
+
+.method public test()V
+.limit regs 1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.java
new file mode 100644
index 0000000..a3d1b68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_15 {
+    public void run() {
+    }
+    public void test() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d
new file mode 100644
index 0000000..0f0ab56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_16.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-virtual {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d
new file mode 100644
index 0000000..da55ec7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_17.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_17
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.java
new file mode 100644
index 0000000..918e3b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+    
+public class T_invoke_virtual_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d
new file mode 100644
index 0000000..32097da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_18.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual/TestStubs;)V
+.limit regs 5
+       invoke-virtual {v4}, dot/junit/opcodes/invoke_virtual/TestStubs/TestStub()V
+Label6:
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.java
new file mode 100644
index 0000000..c6b0c6f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+import dot.junit.opcodes.invoke_virtual.TestStubs;
+
+public class T_invoke_virtual_18 {
+    public void run(TestStubs stub) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d
new file mode 100644
index 0000000..ce0b550
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_19.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_19
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 1
+       invoke-virtual {v3, v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.java
new file mode 100644
index 0000000..36e3515
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_19 extends TSuper {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d
new file mode 100644
index 0000000..f655091
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_20.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual/TestStubs;)V
+.limit regs 5
+Label0:
+
+       invoke-virtual {v4}, dot/junit/opcodes/invoke_virtual/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.java
new file mode 100644
index 0000000..0954ddb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+import dot.junit.opcodes.invoke_virtual.TestStubs;
+
+public class T_invoke_virtual_20 {
+    public void run(TestStubs stub) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d
new file mode 100644
index 0000000..135f037
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_22.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_22
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual/d/TPlain/<init>()V
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d
new file mode 100644
index 0000000..071a91f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_23.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_23
+.super dot/junit/opcodes/invoke_virtual/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d
new file mode 100644
index 0000000..1804cce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_virtual.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+.source T_invoke_virtual_24.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_24
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_virtual.d.TTestInterface
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       invoke-virtual {v3}, dot/junit/opcodes/invoke_virtual/d/TTestInterface/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d
new file mode 100644
index 0000000..7816b12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_25.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_25
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v6, java/lang/Object
+       invoke-virtual {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d
new file mode 100644
index 0000000..5de2f49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_4.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4/test()V
+       return-void
+.end method
+
+.method public native test()V
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.java
new file mode 100644
index 0000000..40cc1fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d
new file mode 100644
index 0000000..6f18698
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_5.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.java
new file mode 100644
index 0000000..a2e32f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_5 {
+    public static void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d
new file mode 100644
index 0000000..a3f42ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_6.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_6
+.super dot/junit/opcodes/invoke_virtual/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.java
new file mode 100644
index 0000000..fd8e058
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+import dot.junit.opcodes.invoke_virtual.ATest;
+
+public class T_invoke_virtual_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d
new file mode 100644
index 0000000..2e3a6a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_7.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_7
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.java
new file mode 100644
index 0000000..27b16ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+    
+public class T_invoke_virtual_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d
new file mode 100644
index 0000000..c6ef760
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_8.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dfh
new file mode 100644
index 0000000..a556dba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dfh
@@ -0,0 +1,288 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a8d05097
+    97 50 D0 A8 
+// parsed: offset 12, len 20: signature           : 6f6c...0043
+    6F 6C D4 68 F7 7B 24 4C 91 C7 92 D9 30 AA 0C 5B EB 08 00 43 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 336 (0x000150) "<init>"
+    50 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 344 (0x000158) "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    58 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 401 (0x000191) "Ljava/lang/Object;"
+    91 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 421 (0x0001a5) "T_invoke_virtual_8.java"
+    A5 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 446 (0x0001be) "V"
+    BE 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 449 (0x0001c1) "Z"
+    C1 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 452 (0x0001c4) "ZL"
+    C4 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 456 (0x0001c8) "ZLL"
+    C8 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 461 (0x0001cd) "equals"
+    CD 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 469 (0x0001d5) "run"
+    D5 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "ZL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 320 (0x000140)
+    06 00 00 00 03 00 00 00 40 01 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "ZLL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 328 (0x000148)
+    07 00 00 00 03 00 00 00 48 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 2 (0x000002) name_idx: 9 (0x000009) "run"
+    00 00 02 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "equals"
+    01 00 01 00 08 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_invoke_virtual_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 474 (0x0001da)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 DA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8.<init>"
+    // parsed: offset 268, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 01 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8.run"
+    // parsed: offset 292, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 294, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 308, len 6: |0000: invoke-virtual {v6, v7}, Ljava/lang/Object;.equals:(Ljava/lang/Object;)Z // method@0003
+//@mod            6E 20 03 00 76 00 
+            6E 20 03 01 76 00 
+        // parsed: offset 314, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 316, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 318, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 320, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 324, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 1
+        01 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 1
+        01 00 
+// parsed: offset 336, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 344, len 57: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    37 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 38 3B 00 
+// parsed: offset 401, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 421, len 25: TYPE_STRING_DATA_ITEM [3] "T_invoke_virtual_8.java"
+    17 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 446, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 449, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 452, len 4: TYPE_STRING_DATA_ITEM [6] "ZL"
+    02 5A 4C 00 
+// parsed: offset 456, len 5: TYPE_STRING_DATA_ITEM [7] "ZLL"
+    03 5A 4C 4C 00 
+// parsed: offset 461, len 8: TYPE_STRING_DATA_ITEM [8] "equals"
+    06 65 71 75 61 6C 73 00 
+// parsed: offset 469, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    // parsed: offset 474, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 475, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 476, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 477, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 479, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 482, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 484, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 485, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 486, len 2: code_off: 292 (0x000124)
+                A4 02 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 320 (0x000140)
+        01 10 00 00 02 00 00 00 40 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 336 (0x000150)
+        02 20 00 00 0A 00 00 00 50 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 474 (0x0001da)
+        00 20 00 00 01 00 00 00 DA 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d
new file mode 100644
index 0000000..f695913
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_9.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v8, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/ATest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/ATest.java
new file mode 100644
index 0000000..e6ebd5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/TestStubs.java
new file mode 100644
index 0000000..d00c43e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java
new file mode 100644
index 0000000..2368dc3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java
@@ -0,0 +1,347 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_1;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_10;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_14;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_15;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_17;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_18;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_19;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_2;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_20;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_4;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_5;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_6;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_7;
+
+public class Test_invoke_virtual_range extends DxTestCase {
+
+    /**
+     * @title invoke virtual method
+     */
+    public void testN1() {
+        T_invoke_virtual_range_1 t = new T_invoke_virtual_range_1();
+        int a = 1;
+        String sa = "a" + a;
+        String sb = "a1";
+        assertTrue(t.run(sa, sb));
+        assertFalse(t.run(t, sa));
+        assertFalse(t.run(sb, t));
+    }
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_7
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        T_invoke_virtual_range_7 t = new T_invoke_virtual_range_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_virtual_range and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_14
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        T_invoke_virtual_range_14 t = new T_invoke_virtual_range_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_17
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        T_invoke_virtual_range_17 t = new T_invoke_virtual_range_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Big number of arguments
+     */
+    public void testN7() {
+        T_invoke_virtual_range_2 t = new T_invoke_virtual_range_2();
+        assertEquals(1, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_invoke_virtual_range_1 t = new T_invoke_virtual_range_1();
+        String s = "s";
+        try {
+            t.run(null, s);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        T_invoke_virtual_range_4 t = new T_invoke_virtual_range_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_6
+        //@uses dot.junit.opcodes.invoke_virtual_range.ATest
+        T_invoke_virtual_range_6 t = new T_invoke_virtual_range_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke-virtual
+     */
+    public void testVFE3() {
+        try {
+            new T_invoke_virtual_range_10().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_virtual_range
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_22
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_23
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper2
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method.
+     */
+    public void testVFE10() {
+         try {
+             new T_invoke_virtual_range_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method.
+     */
+    public void testVFE12() {
+         try {
+             new T_invoke_virtual_range_15().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_18
+        //@uses dot.junit.opcodes.invoke_virtual_range.TestStubs
+         try {
+             new T_invoke_virtual_range_18().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_20
+        //@uses dot.junit.opcodes.invoke_virtual_range.TestStubs
+         try {
+             new T_invoke_virtual_range_20().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_19
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+         try {
+             new T_invoke_virtual_range_19().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title invoke-virtual/range shall be used to invoke private methods
+     */
+    public void testVFE16() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE19() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/Snippet.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/Snippet.java
new file mode 100644
index 0000000..14c735e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/Snippet.java
@@ -0,0 +1,7 @@
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class Snippet {
+    public void test() {
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d
new file mode 100644
index 0000000..c39399e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d
new file mode 100644
index 0000000..7b4d7b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d
new file mode 100644
index 0000000..882b227
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.TSuper2
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d
new file mode 100644
index 0000000..b7f13d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_1.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v6..v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.java
new file mode 100644
index 0000000..2c49efe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_1 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d
new file mode 100644
index 0000000..3f327a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_10.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-virtual/range {v0}, dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.java
new file mode 100644
index 0000000..bc32697
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d
new file mode 100644
index 0000000..b109ace
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_11.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d
new file mode 100644
index 0000000..9b63ef8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_12.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test(Ljava/lang/String;)V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       move-object v6, v5
+       invoke-virtual/range {v6..v7}, dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_12/test(Ljava/lang/String;)V
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d
new file mode 100644
index 0000000..fd6de25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_13.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d
new file mode 100644
index 0000000..32cd481
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d
@@ -0,0 +1,57 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_14.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_14
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v4, 300
+    const v5, 3
+    move-object v3, v6
+
+    invoke-virtual/range {v3..v5}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.java
new file mode 100644
index 0000000..c3b8e0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+    
+public class T_invoke_virtual_range_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d
new file mode 100644
index 0000000..d42643b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_15.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15/testN()V
+       return-void
+.end method
+
+.method public test()V
+.limit regs 1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.java
new file mode 100644
index 0000000..969a1ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_15 {
+    public void run() {
+    }
+    public void test() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d
new file mode 100644
index 0000000..5a71786
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_16.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-virtual/range {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d
new file mode 100644
index 0000000..173c6bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_17.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_17
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.java
new file mode 100644
index 0000000..689f741
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+    
+public class T_invoke_virtual_range_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d
new file mode 100644
index 0000000..cc11d06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_18.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual_range/TestStubs;)V
+.limit regs 5
+       invoke-virtual/range {v4}, dot/junit/opcodes/invoke_virtual_range/TestStubs/TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.java
new file mode 100644
index 0000000..8f01c30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+import dot.junit.opcodes.invoke_virtual_range.TestStubs;
+
+public class T_invoke_virtual_range_18 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d
new file mode 100644
index 0000000..704726b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_19.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_19
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       move-object v2, v3
+       const/4 v3, 1
+       invoke-virtual/range {v2..v3}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.java
new file mode 100644
index 0000000..fefa96d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+
+public class T_invoke_virtual_range_19 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d
new file mode 100644
index 0000000..eac70b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d
@@ -0,0 +1,77 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_2.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test(IIIIIIIIII)I
+.limit regs 11
+    const v0, 10
+    if-ne v0, v10, Label0
+    const v0, 9
+    if-ne v0, v9, Label0
+    const v0, 8
+    if-ne v0, v8, Label0
+    const v0, 7
+    if-ne v0, v7, Label0
+    const v0, 6
+    if-ne v0, v6, Label0
+    const v0, 5
+    if-ne v0, v5, Label0
+    const v0, 4
+    if-ne v0, v4, Label0
+    const v0, 3
+    if-ne v0, v3, Label0
+    const v0, 2
+    if-ne v0, v2, Label0
+    const v0, 1
+    if-ne v0, v1, Label0
+
+    const v0, 1
+    return v0
+Label0:
+    const v0, 0
+    return v0
+
+.end method
+
+.method public run()I
+.limit regs 16
+       move-object v0, v15
+         const v1, 1
+          const v2, 2
+          const v3, 3
+          const v4, 4
+          const v5, 5
+          const v6, 6
+          const v7, 7
+          const v8, 8
+          const v9, 9
+          const v10, 10
+
+       invoke-virtual/range {v0..v10}, dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_2/test(IIIIIIIIII)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.java
new file mode 100644
index 0000000..bc934f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d
new file mode 100644
index 0000000..ab7a4cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_20.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual_range/TestStubs;)V
+.limit regs 5
+Label0:
+
+       invoke-virtual/range {v4}, dot/junit/opcodes/invoke_virtual_range/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.java
new file mode 100644
index 0000000..77c639d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+import dot.junit.opcodes.invoke_virtual_range.TestStubs;
+
+public class T_invoke_virtual_range_20 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d
new file mode 100644
index 0000000..6f6fad5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_22.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_22
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual_range/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual_range/d/TPlain/<init>()V
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d
new file mode 100644
index 0000000..cf21428
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_23.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_23
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual_range/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d
new file mode 100644
index 0000000..9e2022f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_virtual_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+.source T_invoke_virtual_range_24.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_24
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_virtual_range.d.TTestInterface
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       invoke-virtual/range {v3}, dot/junit/opcodes/invoke_virtual_range/d/TTestInterface/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d
new file mode 100644
index 0000000..1d39236
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_25.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_25
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v6, java/lang/Object
+       invoke-virtual/range {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d
new file mode 100644
index 0000000..f68a194
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_4.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4/test()V
+       return-void
+.end method
+
+.method public native test()V
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.java
new file mode 100644
index 0000000..3b6eff0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d
new file mode 100644
index 0000000..361e00c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_5.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.java
new file mode 100644
index 0000000..b14ffb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_5 {
+    public static void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d
new file mode 100644
index 0000000..2dcf120
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_6.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_6
+.super dot/junit/opcodes/invoke_virtual_range/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.java
new file mode 100644
index 0000000..52bdea9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+import dot.junit.opcodes.invoke_virtual_range.ATest;
+
+public class T_invoke_virtual_range_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d
new file mode 100644
index 0000000..b5c44f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_7.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_7
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.java
new file mode 100644
index 0000000..333e3ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+    
+public class T_invoke_virtual_range_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d
new file mode 100644
index 0000000..e2538f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_8.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v6..v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dfh
new file mode 100644
index 0000000..390f2a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dfh
@@ -0,0 +1,290 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a1e659ab
+    AB 59 E6 A1 
+// parsed: offset 12, len 20: signature           : 8e95...8017
+    8E 95 BB E6 C0 B0 72 A9 B2 A8 7C 08 01 0B 76 DC A6 B9 80 17 
+// parsed: offset 32, len 4: file_size           : 644
+    84 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 508 (0x0001fc)
+    FC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 336 (0x000150) "<init>"
+    50 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 344 (0x000158) "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    58 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 413 (0x00019d) "Ljava/lang/Object;"
+    9D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 433 (0x0001b1) "T_invoke_virtual_range_8.java"
+    B1 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 464 (0x0001d0) "V"
+    D0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 467 (0x0001d3) "Z"
+    D3 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 470 (0x0001d6) "ZL"
+    D6 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 474 (0x0001da) "ZLL"
+    DA 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 479 (0x0001df) "equals"
+    DF 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 487 (0x0001e7) "run"
+    E7 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "ZL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 320 (0x000140)
+    06 00 00 00 03 00 00 00 40 01 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "ZLL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 328 (0x000148)
+    07 00 00 00 03 00 00 00 48 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 2 (0x000002) name_idx: 9 (0x000009) "run"
+    00 00 02 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "equals"
+    01 00 01 00 08 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_invoke_virtual_range_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 492 (0x0001ec)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 EC 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8.<init>"
+    // parsed: offset 268, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 01 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8.run"
+    // parsed: offset 292, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 294, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 308, len 6: |0000: invoke-virtual/range {v6..v7}, Ljava/lang/Object;.equals:(Ljava/lang/Object;)Z // method@0003
+//@mod            74 02 03 00 06 00 
+            74 02 03 01 06 00 
+        // parsed: offset 314, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 316, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 318, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 320, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 324, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 1
+        01 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 1
+        01 00 
+// parsed: offset 336, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 344, len 69: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    43 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 72 61 6E 67 65 5F 38 3B 00 
+// parsed: offset 413, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 433, len 31: TYPE_STRING_DATA_ITEM [3] "T_invoke_virtual_range_8.java"
+    1D 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 72 61 6E 67 65 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 464, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 467, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 470, len 4: TYPE_STRING_DATA_ITEM [6] "ZL"
+    02 5A 4C 00 
+// parsed: offset 474, len 5: TYPE_STRING_DATA_ITEM [7] "ZLL"
+    03 5A 4C 4C 00 
+// parsed: offset 479, len 8: TYPE_STRING_DATA_ITEM [8] "equals"
+    06 65 71 75 61 6C 73 00 
+// parsed: offset 487, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    // parsed: offset 492, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 493, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 494, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 495, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 496, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 497, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 500, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 502, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 503, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 504, len 2: code_off: 292 (0x000124)
+                A4 02 
+// parsed: offset 506, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 508, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 512, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 524, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 536, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 548, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 560, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 572, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 584, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 596, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 320 (0x000140)
+        01 10 00 00 02 00 00 00 40 01 00 00 
+    // parsed: offset 608, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 336 (0x000150)
+        02 20 00 00 0A 00 00 00 50 01 00 00 
+    // parsed: offset 620, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 492 (0x0001ec)
+        00 20 00 00 01 00 00 00 EC 01 00 00 
+    // parsed: offset 632, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 508 (0x0001fc)
+        00 10 00 00 01 00 00 00 FC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d
new file mode 100644
index 0000000..393f733
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_9.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v7..v8}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/TestStubs.java
new file mode 100644
index 0000000..8ebe9bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput;
+
+public class TestStubs {
+    // used by testVFE9
+    protected int TestStubField = 0;
+    
+    // used by testE5
+    public final int TestStubFieldFinal = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/Test_iput.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/Test_iput.java
new file mode 100644
index 0000000..f69b308
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/Test_iput.java
@@ -0,0 +1,343 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput.d.T_iput_1;
+import dot.junit.opcodes.iput.d.T_iput_10;
+import dot.junit.opcodes.iput.d.T_iput_11;
+import dot.junit.opcodes.iput.d.T_iput_12;
+import dot.junit.opcodes.iput.d.T_iput_13;
+import dot.junit.opcodes.iput.d.T_iput_14;
+import dot.junit.opcodes.iput.d.T_iput_15;
+import dot.junit.opcodes.iput.d.T_iput_17;
+import dot.junit.opcodes.iput.d.T_iput_19;
+import dot.junit.opcodes.iput.d.T_iput_5;
+import dot.junit.opcodes.iput.d.T_iput_7;
+import dot.junit.opcodes.iput.d.T_iput_8;
+import dot.junit.opcodes.iput.d.T_iput_9;
+
+public class Test_iput extends DxTestCase {
+
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_iput_1 t = new T_iput_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(1000000, t.st_i1);
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_iput_19 t = new T_iput_19();
+        assertEquals(0.0f, t.st_f1);
+        t.run();
+        assertEquals(3.14f, t.st_f1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_iput_12 t = new T_iput_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(1000000, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput.d.T_iput_1
+        //@uses dot.junit.opcodes.iput.d.T_iput_14
+        T_iput_14 t = new T_iput_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(1000000, t.getProtectedField());
+    }
+
+    /**
+     * @title Trying to put float into integer field. Dalvik doens't distinguish 32-bits types
+     * internally, so this operation makes no sense but shall not crash the VM.
+     */
+    public void testN6() {
+        T_iput_5 t = new  T_iput_5();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_13 t = new T_iput_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put integer into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double field
+     * with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title Attempt to set static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput.TestStubs
+        //@uses dot.junit.opcodes.iput.d.T_iput_8
+        try {
+            new T_iput_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput.d.T_iput_1
+        //@uses dot.junit.opcodes.iput.d.T_iput_15
+        try {
+            new T_iput_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput shall not work for boolean fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.iput.TestStubs
+        //@uses dot.junit.opcodes.iput.d.T_iput_11
+    	try {
+            new T_iput_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.d
new file mode 100644
index 0000000..062a5f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_1.java
+.class public dot.junit.opcodes.iput.d.T_iput_1
+.super java/lang/Object
+
+.field public  st_i1 I
+.field protected  st_p1 I
+.field private  st_pvt1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()I
+.limit regs 2
+
+       iget v0, v1, dot.junit.opcodes.iput.d.T_iput_1.st_pvt1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_1.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.java
new file mode 100644
index 0000000..b508414
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_1 {
+    public  int st_i1;
+    protected  int st_p1;
+    private  int st_pvt1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+    
+    public  int getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.d
new file mode 100644
index 0000000..782486a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_10.java
+.class public dot.junit.opcodes.iput.d.T_iput_10
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_10.st_i1N I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.java
new file mode 100644
index 0000000..4f630e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.d
new file mode 100644
index 0000000..9fb06de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_11.java
+.class public dot.junit.opcodes.iput.d.T_iput_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput/TestStubs/<init>()V
+
+       const v1, 1000000
+       iput v1, v0, dot.junit.opcodes.iput.TestStubs.TestStubFieldFinal I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.java
new file mode 100644
index 0000000..9c47bd5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.d
new file mode 100644
index 0000000..73104b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_12.java
+.class public dot.junit.opcodes.iput.d.T_iput_12
+.super java/lang/Object
+
+.field public final st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_12.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.java
new file mode 100644
index 0000000..4fbe9c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_12 {
+    public  int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.d
new file mode 100644
index 0000000..3760a4f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_13.java
+.class public dot.junit.opcodes.iput.d.T_iput_13
+.super java/lang/Object
+
+.field public  st_i1 I
+.field protected  st_p1 I
+.field private  st_pvt1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 1000000
+       iput v1, v0, dot.junit.opcodes.iput.d.T_iput_13.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.java
new file mode 100644
index 0000000..53423f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.d
new file mode 100644
index 0000000..ba404d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_14.java
+.class public dot.junit.opcodes.iput.d.T_iput_14
+.super dot/junit/opcodes/iput/d/T_iput_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput/d/T_iput_1/<init>()V
+       return-void
+.end method
+
+.method public getProtectedField()I
+.limit regs 2
+
+       iget v0, v1, dot.junit.opcodes.iput.d.T_iput_1.st_p1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_1.st_p1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.java
new file mode 100644
index 0000000..7d7e102
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_14 extends T_iput_1{
+    
+    public void run() {
+        st_p1 = 1000000;
+    }
+    
+    public  int getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.d
new file mode 100644
index 0000000..8864195
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_15.java
+.class public dot.junit.opcodes.iput.d.T_iput_15
+.super dot/junit/opcodes/iput/d/T_iput_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput/d/T_iput_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 12321
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_1.st_pvt1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.java
new file mode 100644
index 0000000..f432d27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.d
new file mode 100644
index 0000000..e0b35ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_17.java
+.class public dot.junit.opcodes.iput.d.T_iput_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_17.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.java
new file mode 100644
index 0000000..0c1bb0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.d
new file mode 100644
index 0000000..1ec565d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_18.java
+.class public dot.junit.opcodes.iput.d.T_iput_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.d
new file mode 100644
index 0000000..f7f8997
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_19.java
+.class public dot.junit.opcodes.iput.d.T_iput_19
+.super java/lang/Object
+
+.field public  st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.java
new file mode 100644
index 0000000..bf6deee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_19 {
+    public  float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.d
new file mode 100644
index 0000000..a89c29d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_2.java
+.class public dot.junit.opcodes.iput.d.T_iput_2
+.super java/lang/Object
+
+.field public  st_d1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v1, 1000000.000000
+       iput v1, v3, dot.junit.opcodes.iput.d.T_iput_2.st_d1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.d
new file mode 100644
index 0000000..0161449
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_20.java
+.class public dot.junit.opcodes.iput.d.T_iput_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 0
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.d
new file mode 100644
index 0000000..f189066
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_21.java
+.class public dot.junit.opcodes.iput.d.T_iput_21
+.super java/lang/Object
+
+.field public  st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1234    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.d
new file mode 100644
index 0000000..71b8cdf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_22.java
+.class public dot.junit.opcodes.iput.d.T_iput_22
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_22.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.d
new file mode 100644
index 0000000..e0bf2a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_23.java
+.class public dot.junit.opcodes.iput.d.T_iput_23
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.d
new file mode 100644
index 0000000..4e6d187
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_24.java
+.class public dot.junit.opcodes.iput.d.T_iput_24
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.d
new file mode 100644
index 0000000..bdb6b35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_3.java
+.class public dot.junit.opcodes.iput.d.T_iput_3
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1234
+       iput v0, v2, dot.junit.opcodes.iput.d.T_iput_3.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.dfh
new file mode 100644
index 0000000..0474f19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput/d/T_iput_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput/d/T_iput_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 3bce3c78
+    78 3C CE 3B 
+// parsed: offset 12, len 20: signature           : 15da...0f9b
+    15 DA 79 0D 61 BF 5F C9 34 71 F7 04 83 3D 02 17 E9 5E 0F 9B 
+// parsed: offset 32, len 4: file_size           : 540
+    1C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 404 (0x000194)
+    94 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 304
+    30 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "I"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 336 (0x000150) "Ljava/lang/Object;"
+    50 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 356 (0x000164) "T_iput_3.java"
+    64 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "V"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 374 (0x000176) "run"
+    76 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 379 (0x00017b) "st_i1"
+    7B 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput/d/T_iput_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 386 (0x000182)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 82 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput.d.T_iput_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput.d.T_iput_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x000004d2 int
+            14 00 D2 04 00 00 
+        // parsed: offset 282, len 4: |0003: iput v0, v2, Ldot/junit/opcodes/iput/d/T_iput_3;.st_i1:I // field@0000
+//@mod            59 20 00 00 
+            59 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 299, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 2F 64 2F 54 5F 69 70 75 74 5F 33 3B 00 
+// parsed: offset 336, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 356, len 15: TYPE_STRING_DATA_ITEM [4] "T_iput_3.java"
+    0D 54 5F 69 70 75 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 371, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 374, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 379, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    // parsed: offset 386, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 387, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 388, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 389, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 390, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 391, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 392, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 393, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 396, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 399, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 400, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 402, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 404, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 408, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 420, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 432, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 444, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 456, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 468, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 480, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 492, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 504, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 516, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 386 (0x000182)
+        00 20 00 00 01 00 00 00 82 01 00 00 
+    // parsed: offset 528, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 10 00 00 01 00 00 00 94 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.d
new file mode 100644
index 0000000..08df316
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_30.java
+.class public dot.junit.opcodes.iput.d.T_iput_30
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput/d/T_iput_30
+    const v1, 0
+    iput v1, v0, dot.junit.opcodes.iput.d.T_iput_30.st_i1 I
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.d
new file mode 100644
index 0000000..f324be4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_4.java
+.class public dot.junit.opcodes.iput.d.T_iput_4
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput v3, v2, dot.junit.opcodes.iput.d.T_iput_4.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.d
new file mode 100644
index 0000000..c34dbac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_5.java
+.class public dot.junit.opcodes.iput.d.T_iput_5
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)V
+.limit regs 3
+
+       iput v2, v1, dot.junit.opcodes.iput.d.T_iput_5.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.java
new file mode 100644
index 0000000..6df6a7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_5 {
+    public  int st_i1;
+    
+    public void run(float f) {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.d
new file mode 100644
index 0000000..af7b003
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_7.java
+.class public dot.junit.opcodes.iput.d.T_iput_7
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_7.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.java
new file mode 100644
index 0000000..c7407e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.d
new file mode 100644
index 0000000..6c1ed20
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_8.java
+.class public dot.junit.opcodes.iput.d.T_iput_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+      new-instance v0, Ldot/junit/opcodes/iput/TestStubs;
+      invoke-direct {v0}, dot/junit/opcodes/iput/TestStubs/<init>()V
+
+       const v1, 0
+       iput v1, v0, dot.junit.opcodes.iput.TestStubs.TestStubField I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.java
new file mode 100644
index 0000000..264aef0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.d
new file mode 100644
index 0000000..7c7d755
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_9.java
+.class public dot.junit.opcodes.iput.d.T_iput_9
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_9noclass.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.java
new file mode 100644
index 0000000..a3c1695
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_sput_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_sput_3.dfh
new file mode 100644
index 0000000..f7d95ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_sput_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07553f66
+    66 3F 55 07 
+// parsed: offset 12, len 20: signature           : 2441...71d9
+    24 41 F7 4C E7 A3 98 B5 AC 67 0E F8 6B D1 13 E3 DD 10 71 D9 
+// parsed: offset 32, len 4: file_size           : 540
+    1C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 404 (0x000194)
+    94 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 304
+    30 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "I"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 336 (0x000150) "Ljava/lang/Object;"
+    50 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 356 (0x000164) "T_sput_3.java"
+    64 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "V"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 374 (0x000176) "run"
+    76 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 379 (0x00017b) "st_i1"
+    7B 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput/d/T_sput_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 386 (0x000182)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 82 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x000004d2 int
+            14 00 D2 04 00 00 
+        // parsed: offset 282, len 4: |0003: sput v0, Ldot/junit/opcodes/sput/d/T_sput_3;.st_i1:I // field@0000
+//@mod            67 00 00 00 
+            67 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 299, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 2F 64 2F 54 5F 73 70 75 74 5F 33 3B 00 
+// parsed: offset 336, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 356, len 15: TYPE_STRING_DATA_ITEM [4] "T_sput_3.java"
+    0D 54 5F 73 70 75 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 371, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 374, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 379, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    // parsed: offset 386, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 387, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 388, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 389, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 390, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 391, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 392, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 393, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 396, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 399, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 400, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 402, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 404, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 408, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 420, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 432, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 444, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 456, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 468, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 480, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 492, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 504, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 516, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 386 (0x000182)
+        00 20 00 00 01 00 00 00 82 01 00 00 
+    // parsed: offset 528, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 10 00 00 01 00 00 00 94 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/TestStubs.java
new file mode 100644
index 0000000..07919e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean;
+
+public class TestStubs {
+    // used by testVFE9
+    protected boolean TestStubField = false;
+    
+    // used by testE5
+    public final boolean TestStubFieldFinal = false;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java
new file mode 100644
index 0000000..6a2419b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java
@@ -0,0 +1,329 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_10;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_11;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_12;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_13;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_14;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_15;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_17;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_7;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_8;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_9;
+
+
+public class Test_iput_boolean extends DxTestCase {
+
+    /**
+     * @title put boolean into field
+     */
+    public void testN1() {
+        T_iput_boolean_1 t = new T_iput_boolean_1();
+        assertEquals(false, t.st_i1);
+        t.run();
+        assertEquals(true, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_boolean_12 t = new T_iput_boolean_12();
+        assertEquals(false, t.st_i1);
+        t.run();
+        assertEquals(true, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_14
+        T_iput_boolean_14 t = new T_iput_boolean_14();
+        assertEquals(false, t.getProtectedField());
+        t.run();
+        assertEquals(true, t.getProtectedField());
+    }
+
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_boolean_13 t = new T_iput_boolean_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B14
+     * @title put boolean into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_boolean_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title put value '2' into boolean field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_boolean_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_boolean.TestStubs
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_8
+        try {
+            new T_iput_boolean_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_boolean_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_boolean_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_15
+        try {
+            new T_iput_boolean_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput_boolean shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput_boolean shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput_boolean shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput_boolean shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title iput_boolean shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title iput_boolean shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_boolean.TestStubs
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_11
+        try {
+            new T_iput_boolean_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d
new file mode 100644
index 0000000..47ee9dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_1.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1
+.super java/lang/Object
+
+.field public  st_i1 Z
+.field protected  st_p1 Z
+.field private  st_pvt1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()Z
+.limit regs 2
+
+       iget-boolean v0, v1, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_pvt1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.java
new file mode 100644
index 0000000..14d2b98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_1 {
+    public  boolean st_i1;
+    protected  boolean st_p1;
+    private  boolean st_pvt1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+    
+    public  boolean getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d
new file mode 100644
index 0000000..77f762a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_10.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_10
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_10.st_i1N Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.java
new file mode 100644
index 0000000..7279fe0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d
new file mode 100644
index 0000000..9f8d148
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_11.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/TestStubs/<init>()V
+
+       const v1, 1
+       iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.TestStubs.TestStubFieldFinal Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.java
new file mode 100644
index 0000000..77de3e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d
new file mode 100644
index 0000000..327fef6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_12.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_12
+.super java/lang/Object
+
+.field public  final st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_12.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.java
new file mode 100644
index 0000000..4321bfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_12 {
+    public  boolean st_i1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d
new file mode 100644
index 0000000..cbe6560
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_13.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_13
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 1
+       iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_13.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.java
new file mode 100644
index 0000000..c523c5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d
new file mode 100644
index 0000000..8a7f23e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_14.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_14
+.super dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()Z
+.limit regs 2
+
+       iget-boolean v0, v1, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_p1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_p1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.java
new file mode 100644
index 0000000..e708762
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_14 extends T_iput_boolean_1{
+    
+    public void run() {
+        st_p1 = true;
+    }
+    
+    public  boolean getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d
new file mode 100644
index 0000000..605fab5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_15.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_15
+.super dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_pvt1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.java
new file mode 100644
index 0000000..893595b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d
new file mode 100644
index 0000000..2d0e858
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_17.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_17.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.java
new file mode 100644
index 0000000..c7dbaeb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d
new file mode 100644
index 0000000..5ca6791
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_18.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d
new file mode 100644
index 0000000..aed12db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_19.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_19
+.super java/lang/Object
+
+.field public  st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.java
new file mode 100644
index 0000000..3828d90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_19 {
+    public  float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d
new file mode 100644
index 0000000..20ba2cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_2.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_2
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-boolean v0, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d
new file mode 100644
index 0000000..b7bb68c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_20.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 0    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d
new file mode 100644
index 0000000..a05e7d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_21.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_21
+.super java/lang/Object
+
+.field public  st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d
new file mode 100644
index 0000000..5953110
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_22.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d
new file mode 100644
index 0000000..3d51bf4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_23.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_23
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d
new file mode 100644
index 0000000..ccd56a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_24.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_24
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d
new file mode 100644
index 0000000..864852f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_3.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dfh
new file mode 100644
index 0000000..971a7eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 77b34b2d
+    2D 4B B3 77 
+// parsed: offset 12, len 20: signature           : 6ffc...5670
+    6F FC D3 2C 6D F3 E5 94 FA 99 F9 FC 05 BD 3A 88 8C CD 56 70 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 328
+    48 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 349 (0x00015d) "Ljava/lang/Object;"
+    5D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 369 (0x000171) "T_iput_boolean_3.java"
+    71 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 392 (0x000188) "V"
+    88 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "Z"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "run"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "st_i1"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 7 (0x000007) "st_i1"
+    00 00 03 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_iput_boolean_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-boolean v0, v3, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;.st_i1:Z // field@0000
+//@mod            5C 30 00 00 
+            5C 30 00 01
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 69 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 3B 00 
+// parsed: offset 349, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 369, len 23: TYPE_STRING_DATA_ITEM [3] "T_iput_boolean_3.java"
+    15 54 5F 69 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 392, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 398, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 403, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 414, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 415, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d
new file mode 100644
index 0000000..f68e154
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_30.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_30
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30
+    const v1, 0
+    iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_30.st_i1 Z
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d
new file mode 100644
index 0000000..5b0d440
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_4.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-boolean v3, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d
new file mode 100644
index 0000000..29230ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_6.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6
+.super java/lang/Object
+
+.field public  s Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v2, 2    
+       iput-boolean v2, v5, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6.s Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d
new file mode 100644
index 0000000..1c26b25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_7.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_7
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_7.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.java
new file mode 100644
index 0000000..c48328e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d
new file mode 100644
index 0000000..ce16612
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_8.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/TestStubs/<init>()V
+       const v1, 0
+       iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.TestStubs.TestStubField Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.java
new file mode 100644
index 0000000..6706b11
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d
new file mode 100644
index 0000000..b740349
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_9.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_9
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_9noclass.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.java
new file mode 100644
index 0000000..86c2fbf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/TestStubs.java
new file mode 100644
index 0000000..c8906b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte;
+
+public class TestStubs {
+    // used by testVFE9
+    protected byte TestStubField = 77;
+    
+    // used by testE5
+    public final byte TestStubFieldFinal = 77;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java
new file mode 100644
index 0000000..f67e22b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java
@@ -0,0 +1,330 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_1;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_10;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_11;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_12;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_13;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_14;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_15;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_17;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_7;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_8;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_9;
+
+public class Test_iput_byte extends DxTestCase {
+    /**
+     * @title put byte into field
+     */
+    public void testN1() {
+        T_iput_byte_1 t = new T_iput_byte_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_byte_12 t = new T_iput_byte_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_1
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_14
+        T_iput_byte_14 t = new T_iput_byte_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_byte_13 t = new T_iput_byte_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put byte into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_byte_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title put value '256' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_byte_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_byte.TestStubs
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_8
+        try {
+            new T_iput_byte_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_byte_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_byte_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_1
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_15
+        try {
+            new T_iput_byte_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput-byte shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-byte shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-byte shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-byte shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-byte shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-byte shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_byte.TestStubs
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_11
+    	try {
+            new T_iput_byte_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d
new file mode 100644
index 0000000..860157b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_1.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_1
+.super java/lang/Object
+
+.field public  st_i1 B
+.field protected  st_p1 B
+.field private  st_pvt1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()B
+.limit regs 2
+
+       iget-byte v0, v1, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_pvt1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.java
new file mode 100644
index 0000000..d926c18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_1 {
+    public  byte st_i1;
+    protected  byte st_p1;
+    private  byte st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public  byte getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d
new file mode 100644
index 0000000..279b2a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_10.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_10
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_10.st_i1N B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.java
new file mode 100644
index 0000000..f7278f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d
new file mode 100644
index 0000000..9c80461
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_11.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/TestStubs/<init>()V
+
+       const v1, 1
+       iput-byte v1, v0, dot.junit.opcodes.iput_byte.TestStubs.TestStubFieldFinal B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.java
new file mode 100644
index 0000000..a77d3c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d
new file mode 100644
index 0000000..ee0355b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_12.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_12
+.super java/lang/Object
+
+.field public  final st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_12.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.java
new file mode 100644
index 0000000..c64063c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_12 {
+    public  byte st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d
new file mode 100644
index 0000000..26cd104
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_13.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_13
+.super java/lang/Object
+
+.field public  st_i1 B
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 77
+       iput-byte v1, v0, dot.junit.opcodes.iput_byte.d.T_iput_byte_13.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.java
new file mode 100644
index 0000000..e907164
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_13 {
+    
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d
new file mode 100644
index 0000000..9be11ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_14.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_14
+.super dot/junit/opcodes/iput_byte/d/T_iput_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/d/T_iput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()B
+.limit regs 2
+
+       iget-byte v0, v1, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_p1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_p1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.java
new file mode 100644
index 0000000..e1bcc4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_14 extends T_iput_byte_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public byte getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d
new file mode 100644
index 0000000..2f14e14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_15.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_15
+.super dot/junit/opcodes/iput_byte/d/T_iput_byte_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/d/T_iput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_pvt1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.java
new file mode 100644
index 0000000..249926f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d
new file mode 100644
index 0000000..1f8bd94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_17.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_17.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.java
new file mode 100644
index 0000000..6eca2a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d
new file mode 100644
index 0000000..153aae1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_18.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d
new file mode 100644
index 0000000..3805c5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_2.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_2
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-byte v0, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d
new file mode 100644
index 0000000..2452e5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_20.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-byte v3, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
new file mode 100644
index 0000000..9f8bd0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_21.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_21
+.super java/lang/Object
+
+.field public  st_s I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_21.st_s I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
new file mode 100644
index 0000000..e0a19be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_22.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_22
+.super java/lang/Object
+
+.field public  st_b I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_22.st_b I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d
new file mode 100644
index 0000000..afae162
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_23.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_23
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d
new file mode 100644
index 0000000..ac31166
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_24.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d
new file mode 100644
index 0000000..c3a8828
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_3.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_3
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-byte v0, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_3.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dfh
new file mode 100644
index 0000000..74792e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6e4345b3
+    B3 45 43 6E 
+// parsed: offset 12, len 20: signature           : febf...8438
+    FE BF FB D0 A8 35 97 52 FC 71 45 C2 D3 90 2B F7 03 4D 84 38 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "B"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_iput_byte_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_byte_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_byte.d.T_iput_byte_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_byte.d.T_iput_byte_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-byte v0, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;.st_i1:B // field@0000
+//@mod            5D 20 00 00 
+            5D 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 62 79 74 65 2F 64 2F 54 5F 69 70 75 74 5F 62 79 74 65 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_iput_byte_3.java"
+    12 54 5F 69 70 75 74 5F 62 79 74 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    // parsed: offset 401, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 402, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d
new file mode 100644
index 0000000..b29c0e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_30.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_30
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_byte/d/T_iput_byte_30
+    const v1, 0
+    iput-byte v1, v0, dot.junit.opcodes.iput_byte.d.T_iput_byte_30.st_i1 B
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d
new file mode 100644
index 0000000..18a254f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_4.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_4
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-byte v3, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d
new file mode 100644
index 0000000..d349e8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_6.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_6
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 256
+       iput-byte v0, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_6.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d
new file mode 100644
index 0000000..4ac5aa9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_7.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_7
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_7.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.java
new file mode 100644
index 0000000..3ff9a3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d
new file mode 100644
index 0000000..34b537c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_8.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/TestStubs/<init>()V
+
+       const v1, 0
+       iput-byte v1, v0, dot.junit.opcodes.iput_byte.TestStubs.TestStubField B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.java
new file mode 100644
index 0000000..8a29bb2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d
new file mode 100644
index 0000000..338b321
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_9.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_9
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_9noclass.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.java
new file mode 100644
index 0000000..37f7a6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/TestStubs.java
new file mode 100644
index 0000000..a0d947f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char;
+
+public class TestStubs {
+    // used by testVFE9
+    protected char TestStubField = 77;
+    
+    // used by testE5
+    public final char TestStubFieldFinal = 77;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/Test_iput_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/Test_iput_char.java
new file mode 100644
index 0000000..f3a4f9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/Test_iput_char.java
@@ -0,0 +1,333 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_char.d.T_iput_char_1;
+import dot.junit.opcodes.iput_char.d.T_iput_char_10;
+import dot.junit.opcodes.iput_char.d.T_iput_char_11;
+import dot.junit.opcodes.iput_char.d.T_iput_char_12;
+import dot.junit.opcodes.iput_char.d.T_iput_char_13;
+import dot.junit.opcodes.iput_char.d.T_iput_char_14;
+import dot.junit.opcodes.iput_char.d.T_iput_char_15;
+import dot.junit.opcodes.iput_char.d.T_iput_char_17;
+import dot.junit.opcodes.iput_char.d.T_iput_char_7;
+import dot.junit.opcodes.iput_char.d.T_iput_char_8;
+import dot.junit.opcodes.iput_char.d.T_iput_char_9;
+
+public class Test_iput_char extends DxTestCase {
+    /**
+     * @title put char into field
+     */
+    public void testN1() {
+        T_iput_char_1 t = new T_iput_char_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_char_12 t = new T_iput_char_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_1
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_14
+        T_iput_char_14 t = new T_iput_char_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_char_13 t = new T_iput_char_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put char into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_char_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_char_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_char.TestStubs
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_8
+        try {
+            new T_iput_char_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_char_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_char_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_1
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_15
+        try {
+            new T_iput_char_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput-char shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-char shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-char shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-char shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-char shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-char shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_char.TestStubs
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_11
+    	try {
+            new T_iput_char_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d
new file mode 100644
index 0000000..1872727
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_1.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_1
+.super java/lang/Object
+
+.field public  st_i1 C
+.field protected  st_p1 C
+.field private  st_pvt1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()C
+.limit regs 2
+
+       iget-char v0, v1, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_pvt1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.java
new file mode 100644
index 0000000..a2a83cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_1 {
+    public  char st_i1;
+    protected  char st_p1;
+    private  char st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public  char getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d
new file mode 100644
index 0000000..466cad9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_10.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_10
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_10.st_i1N C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.java
new file mode 100644
index 0000000..2e2c554
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d
new file mode 100644
index 0000000..cd32504
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_11.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/TestStubs/<init>()V
+
+       const v1, 1
+       iput-char v1, v0, dot.junit.opcodes.iput_char.TestStubs.TestStubFieldFinal C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.java
new file mode 100644
index 0000000..629d319
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d
new file mode 100644
index 0000000..9aeb2cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_12.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_12
+.super java/lang/Object
+
+.field public  final st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_12.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.java
new file mode 100644
index 0000000..b20146a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_12 {
+    public  char st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d
new file mode 100644
index 0000000..9cbce64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_13.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_13
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 77
+       iput-char v1, v0, dot.junit.opcodes.iput_char.d.T_iput_char_13.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.java
new file mode 100644
index 0000000..5f15efc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d
new file mode 100644
index 0000000..71dca61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_14.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_14
+.super dot/junit/opcodes/iput_char/d/T_iput_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/d/T_iput_char_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()C
+.limit regs 2
+
+       iget-char v0, v1, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_p1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_p1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.java
new file mode 100644
index 0000000..a55800a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_14 extends T_iput_char_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public  char getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d
new file mode 100644
index 0000000..4cccb49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_15.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_15
+.super dot/junit/opcodes/iput_char/d/T_iput_char_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/d/T_iput_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_pvt1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.java
new file mode 100644
index 0000000..9419df4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d
new file mode 100644
index 0000000..61e503d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_17.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_17.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.java
new file mode 100644
index 0000000..41d3dfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d
new file mode 100644
index 0000000..a9d9ac9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_18.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d
new file mode 100644
index 0000000..cc8cd62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_2.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_2
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-char v0, v2, dot.junit.opcodes.iput_char.d.T_iput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d
new file mode 100644
index 0000000..5aa31b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_20.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-char v3, v3, dot.junit.opcodes.iput_char.d.T_iput_char_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d
new file mode 100644
index 0000000..b9f7cc6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_21.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_21
+.super java/lang/Object
+
+.field public  st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d
new file mode 100644
index 0000000..ca94dbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_22.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d
new file mode 100644
index 0000000..3494a90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_23.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_23
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d
new file mode 100644
index 0000000..d148a4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_24.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d
new file mode 100644
index 0000000..05233a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_3.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_3
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-char v0, v2, dot.junit.opcodes.iput_char.d.T_iput_char_3.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.dfh
new file mode 100644
index 0000000..95d1306
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_char/d/T_iput_char_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_char/d/T_iput_char_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : bfb944c4
+    C4 44 B9 BF 
+// parsed: offset 12, len 20: signature           : 661f...6c76
+    66 1F 6A C5 E6 6E 82 B7 E8 AC B8 D2 AC 01 D4 58 34 56 6C 76 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "C"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_iput_char_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_char_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_char.d.T_iput_char_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_char.d.T_iput_char_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-char v0, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_3;.st_i1:C // field@0000
+//@mod            5E 20 00 00 
+            5E 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 63 68 61 72 2F 64 2F 54 5F 69 70 75 74 5F 63 68 61 72 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_iput_char_3.java"
+    12 54 5F 69 70 75 74 5F 63 68 61 72 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    // parsed: offset 401, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 402, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d
new file mode 100644
index 0000000..8182241
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_30.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_30
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_char/d/T_iput_char_30
+    const v1, 0
+    iput-char v1, v0, dot.junit.opcodes.iput_char.d.T_iput_char_30.st_i1 C
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d
new file mode 100644
index 0000000..6f78812
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_4.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_4
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-char v3, v2, dot.junit.opcodes.iput_char.d.T_iput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d
new file mode 100644
index 0000000..5614d67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_6.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_6
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       iput-char v0, v2, dot.junit.opcodes.iput_char.d.T_iput_char_6.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d
new file mode 100644
index 0000000..13f4e50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_7.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_7
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_7.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.java
new file mode 100644
index 0000000..4e148d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d
new file mode 100644
index 0000000..95616a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_8.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/TestStubs/<init>()V
+
+       const v1, 0
+       iput-char v1, v0, dot.junit.opcodes.iput_char.TestStubs.TestStubField C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.java
new file mode 100644
index 0000000..186ce0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d
new file mode 100644
index 0000000..d2efaae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_9.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_9
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_9noclass.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.java
new file mode 100644
index 0000000..3cb3667
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/TestStubs.java
new file mode 100644
index 0000000..d8354b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object;
+
+public class TestStubs {
+    // used by testVFE9
+    protected Object TestStubField = null;
+    
+    // used by testE5
+    public final Object TestStubFieldFinal = null;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/Test_iput_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/Test_iput_object.java
new file mode 100644
index 0000000..e2f8fa4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/Test_iput_object.java
@@ -0,0 +1,333 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_object.d.T_iput_object_1;
+import dot.junit.opcodes.iput_object.d.T_iput_object_10;
+import dot.junit.opcodes.iput_object.d.T_iput_object_11;
+import dot.junit.opcodes.iput_object.d.T_iput_object_12;
+import dot.junit.opcodes.iput_object.d.T_iput_object_13;
+import dot.junit.opcodes.iput_object.d.T_iput_object_14;
+import dot.junit.opcodes.iput_object.d.T_iput_object_15;
+import dot.junit.opcodes.iput_object.d.T_iput_object_17;
+import dot.junit.opcodes.iput_object.d.T_iput_object_7;
+import dot.junit.opcodes.iput_object.d.T_iput_object_8;
+import dot.junit.opcodes.iput_object.d.T_iput_object_9;
+
+public class Test_iput_object extends DxTestCase {
+    /**
+     * @title put reference into field
+     */
+    public void testN1() {
+        T_iput_object_1 t = new T_iput_object_1();
+        assertEquals(null, t.st_i1);
+        t.run();
+        assertEquals(t, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_object_12 t = new T_iput_object_12();
+        assertEquals(null, t.st_i1);
+        t.run();
+        assertEquals(t, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_1
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_14
+        T_iput_object_14 t = new T_iput_object_14();
+        assertEquals(null, t.getProtectedField());
+        t.run();
+        assertEquals(t, t.getProtectedField());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_object_13 t = new T_iput_object_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put object into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_object_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_object_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_object.TestStubs
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_8
+        try {
+            new T_iput_object_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_object_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_object_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_1
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_15
+        try {
+            new T_iput_object_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput-object shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title assignment incompatible references
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-object shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-object shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-object shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-object shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-object shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_object.TestStubs
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_11
+    	try {
+            new T_iput_object_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d
new file mode 100644
index 0000000..6a9215e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_1.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_1
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+.field protected  st_p1 Ljava/lang/Object;
+.field private  st_pvt1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()Ljava/lang/Object;
+.limit regs 2
+
+       iget-object v0, v1, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_pvt1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.java
new file mode 100644
index 0000000..fdedfda
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_1 {
+    public  Object st_i1;
+    protected  Object st_p1;
+    private  Object st_pvt1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+    
+    public  Object getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d
new file mode 100644
index 0000000..92f9cff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_10.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_10
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_10.st_i1N Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.java
new file mode 100644
index 0000000..01e9cb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d
new file mode 100644
index 0000000..f75accc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_11.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/TestStubs/<init>()V
+
+       iput-object v2, v0, dot.junit.opcodes.iput_object.TestStubs.TestStubFieldFinal Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.java
new file mode 100644
index 0000000..03c14d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d
new file mode 100644
index 0000000..69f1309
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_12.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_12
+.super java/lang/Object
+
+.field public  final st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_12.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.java
new file mode 100644
index 0000000..4a6da45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_12 {
+    public  Object st_i1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d
new file mode 100644
index 0000000..f282745
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_13.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_13
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       iput-object v2, v0, dot.junit.opcodes.iput_object.d.T_iput_object_13.st_i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.java
new file mode 100644
index 0000000..334f14e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+
+public class T_iput_object_13 {
+    
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d
new file mode 100644
index 0000000..4e420fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_14.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_14
+.super dot/junit/opcodes/iput_object/d/T_iput_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/d/T_iput_object_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()Ljava/lang/Object;
+.limit regs 2
+
+       iget-object v0, v1, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_p1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_p1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.java
new file mode 100644
index 0000000..2bc9c2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_14 extends T_iput_object_1{
+    
+    public void run() {
+        st_p1 = this;
+    }
+    
+    public Object getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d
new file mode 100644
index 0000000..35aeab9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_15.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_15
+.super dot/junit/opcodes/iput_object/d/T_iput_object_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/d/T_iput_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_pvt1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.java
new file mode 100644
index 0000000..84667f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d
new file mode 100644
index 0000000..71eb363
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_17.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_17.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.java
new file mode 100644
index 0000000..6db4b58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d
new file mode 100644
index 0000000..56d8da8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_18.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d
new file mode 100644
index 0000000..805388f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_2.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_2
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1234    
+       iput-object v0, v2, dot.junit.opcodes.iput_object.d.T_iput_object_2.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d
new file mode 100644
index 0000000..a9b90be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_20.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/String;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_20.st_o Ljava/lang/String;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d
new file mode 100644
index 0000000..19aa1cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_21.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_21
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d
new file mode 100644
index 0000000..8d7272e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_22.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d
new file mode 100644
index 0000000..296a14b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_23.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_23
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d
new file mode 100644
index 0000000..51bbb2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_24.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d
new file mode 100644
index 0000000..fa05a78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_3.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_3
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+        iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_3.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.dfh
new file mode 100644
index 0000000..8a922e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.dfh
@@ -0,0 +1,253 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_object/d/T_iput_object_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_object/d/T_iput_object_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e2b84420
+    20 44 B8 E2 
+// parsed: offset 12, len 20: signature           : 498f...47af
+    49 8F 16 1B 5F D7 3D 35 18 CB F9 59 65 B7 A8 60 6A 19 47 AF 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 7
+    07 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 140 (0x00008c)
+    8C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 196 (0x0000c4)
+    C4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 228 (0x0000e4)
+    E4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 276 (0x000114) "<init>"
+    14 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 284 (0x00011c) "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    1C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ljava/lang/Object;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "T_iput_object_3.java"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 377 (0x000179) "V"
+    79 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "run"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 385 (0x000181) "st_i1"
+    81 01 00 00 
+
+// type_ids:
+// parsed: offset 140, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    01 00 00 00 
+// parsed: offset 144, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 152, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 164, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "st_i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 180, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 188, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 196, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_iput_object_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 392 (0x000188)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 88 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_object.d.T_iput_object_3.<init>"
+    // parsed: offset 228, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 230, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 232, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 234, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 236, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 240, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 244, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 250, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_object.d.T_iput_object_3.run"
+    // parsed: offset 252, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 254, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 256, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 258, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 260, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 264, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 268, len 4: |0000: iput-object v2, v2, Ldot/junit/opcodes/iput_object/d/T_iput_object_3;.st_i1:Ljava/lang/Object; // field@0000
+//@mod            5B 22 00 00 
+            5B 22 00 01 
+        // parsed: offset 272, len 2: |0002: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 274, len 2: PADDING
+    00 00 
+// parsed: offset 276, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 284, len 51: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 69 70 75 74 5F 6F 62 6A 65 63 74 5F 33 3B 00 
+// parsed: offset 335, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 355, len 22: TYPE_STRING_DATA_ITEM [3] "T_iput_object_3.java"
+    14 54 5F 69 70 75 74 5F 6F 62 6A 65 63 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 377, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 380, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// parsed: offset 385, len 7: TYPE_STRING_DATA_ITEM [6] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    // parsed: offset 392, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 393, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 394, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 395, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 396, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 397, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 399, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 402, len 2: code_off: 228 (0x0000e4)
+                E4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 404, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 405, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 406, len 2: code_off: 252 (0x0000fc)
+                FC 01 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 112 (0x000070)
+        01 00 00 00 07 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 140 (0x00008c)
+        02 00 00 00 03 00 00 00 8C 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 152 (0x000098)
+        03 00 00 00 01 00 00 00 98 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 164 (0x0000a4)
+        04 00 00 00 01 00 00 00 A4 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        05 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 196 (0x0000c4)
+        06 00 00 00 01 00 00 00 C4 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 228 (0x0000e4)
+        01 20 00 00 02 00 00 00 E4 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 276 (0x000114)
+        02 20 00 00 07 00 00 00 14 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 392 (0x000188)
+        00 20 00 00 01 00 00 00 88 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d
new file mode 100644
index 0000000..ace5b2c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_30.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_30
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_object/d/T_iput_object_30
+    const v1, 0
+    iput-object v1, v0, dot.junit.opcodes.iput_object.d.T_iput_object_30.st_i1 Ljava/lang/Object;
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d
new file mode 100644
index 0000000..8906abe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_4.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_4
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v3, v2, dot.junit.opcodes.iput_object.d.T_iput_object_4.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d
new file mode 100644
index 0000000..5e9f811
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_6.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_6
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v3, v2, dot.junit.opcodes.iput_object.d.T_iput_object_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d
new file mode 100644
index 0000000..25768ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_7.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_7
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_7.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.java
new file mode 100644
index 0000000..60bba2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d
new file mode 100644
index 0000000..971dec4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_8.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/TestStubs/<init>()V
+
+       iput-object v2, v0, dot.junit.opcodes.iput_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.java
new file mode 100644
index 0000000..f104e78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d
new file mode 100644
index 0000000..3fd712b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_9.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_9
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_9noclass.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.java
new file mode 100644
index 0000000..7b53911
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/TestStubs.java
new file mode 100644
index 0000000..8cee31e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short;
+
+public class TestStubs {
+    // used by testVFE9
+    protected short TestStubField = 77;
+    
+    // used by testE5
+    public final short TestStubFieldFinal = 77;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/Test_iput_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/Test_iput_short.java
new file mode 100644
index 0000000..0ea32e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/Test_iput_short.java
@@ -0,0 +1,332 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_short.d.T_iput_short_1;
+import dot.junit.opcodes.iput_short.d.T_iput_short_10;
+import dot.junit.opcodes.iput_short.d.T_iput_short_11;
+import dot.junit.opcodes.iput_short.d.T_iput_short_12;
+import dot.junit.opcodes.iput_short.d.T_iput_short_13;
+import dot.junit.opcodes.iput_short.d.T_iput_short_14;
+import dot.junit.opcodes.iput_short.d.T_iput_short_15;
+import dot.junit.opcodes.iput_short.d.T_iput_short_17;
+import dot.junit.opcodes.iput_short.d.T_iput_short_7;
+import dot.junit.opcodes.iput_short.d.T_iput_short_8;
+import dot.junit.opcodes.iput_short.d.T_iput_short_9;
+
+public class Test_iput_short extends DxTestCase {
+    /**
+     * @title put short into field
+     */
+    public void testN1() {
+        T_iput_short_1 t = new T_iput_short_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_short_12 t = new T_iput_short_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_1
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_14
+        T_iput_short_14 t = new T_iput_short_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_short_13 t = new T_iput_short_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put short into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_short_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_short_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_short.TestStubs
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_8
+        try {
+            new T_iput_short_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_short_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_short_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_1
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_15
+        try {
+            new T_iput_short_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput-short shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-short shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-short shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-short shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-short shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-short shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_short.TestStubs
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_11
+    	try {
+            new T_iput_short_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d
new file mode 100644
index 0000000..8aca472
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_1.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_1
+.super java/lang/Object
+
+.field public  st_i1 S
+.field protected  st_p1 S
+.field private  st_pvt1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public getPvtField()S
+.limit regs 2
+
+       iget-short v0, v1, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_pvt1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.java
new file mode 100644
index 0000000..a804c96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_1 {
+    public  short st_i1;
+    protected  short st_p1;
+    private  short st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public  short getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d
new file mode 100644
index 0000000..7feaba8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_10.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_10
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_10.st_i1N S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.java
new file mode 100644
index 0000000..eb01ab1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d
new file mode 100644
index 0000000..23539d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_11.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_short/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/TestStubs/<init>()V
+
+       const v1, 1
+       iput-short v1, v0, dot.junit.opcodes.iput_short.TestStubs.TestStubFieldFinal S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.java
new file mode 100644
index 0000000..dc23c74
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d
new file mode 100644
index 0000000..b0f2f15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_12.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_12
+.super java/lang/Object
+
+.field public  final st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_12.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.java
new file mode 100644
index 0000000..eaacd89
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_12 {
+    public  short st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d
new file mode 100644
index 0000000..4472907
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_13.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_13
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 77
+       iput-short v1, v0, dot.junit.opcodes.iput_short.d.T_iput_short_13.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.java
new file mode 100644
index 0000000..2ba3c63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+
+public class T_iput_short_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d
new file mode 100644
index 0000000..f7b07c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_14.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_14
+.super dot/junit/opcodes/iput_short/d/T_iput_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/d/T_iput_short_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()S
+.limit regs 2
+
+       iget-short v0, v1, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_p1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_p1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.java
new file mode 100644
index 0000000..8a33e07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_14 extends T_iput_short_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public  short getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d
new file mode 100644
index 0000000..5732b91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_15.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_15
+.super dot/junit/opcodes/iput_short/d/T_iput_short_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/d/T_iput_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_pvt1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.java
new file mode 100644
index 0000000..17398b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d
new file mode 100644
index 0000000..bd8966a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_17.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_17.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.java
new file mode 100644
index 0000000..b89d34b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d
new file mode 100644
index 0000000..5d543c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_18.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d
new file mode 100644
index 0000000..ae98945
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_2.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_2
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-short v0, v2, dot.junit.opcodes.iput_short.d.T_iput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d
new file mode 100644
index 0000000..b7524dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_20.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-short v3, v3, dot.junit.opcodes.iput_short.d.T_iput_short_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d
new file mode 100644
index 0000000..7b80f03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_21.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_21
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d
new file mode 100644
index 0000000..4f969d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_22.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d
new file mode 100644
index 0000000..6f2cdc1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_23.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_23
+.super java/lang/Object
+
+.field public st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d
new file mode 100644
index 0000000..326cd78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_24.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d
new file mode 100644
index 0000000..0a091e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_3.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_3
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-short v0, v2, dot.junit.opcodes.iput_short.d.T_iput_short_3.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.dfh
new file mode 100644
index 0000000..f055d5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.dfh
@@ -0,0 +1,259 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_short/d/T_iput_short_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_short/d/T_iput_short_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 69af47b5
+    B5 47 AF 69 
+// parsed: offset 12, len 20: signature           : 8879...c4a0
+    88 79 16 98 CF A1 69 7E 3C 6B E3 73 9E F7 E8 E4 22 93 C4 A0 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "Ljava/lang/Object;"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 365 (0x00016d) "S"
+    6D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 368 (0x000170) "T_iput_short_3.java"
+    70 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 397 (0x00018d) "st_i1"
+    8D 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 7 (0x000007) "st_i1"
+    00 00 02 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_short_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 404 (0x000194)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 94 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_short.d.T_iput_short_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_short.d.T_iput_short_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-short v0, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_3;.st_i1:S // field@0000
+//@mod            5F 20 00 00 
+            5F 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 69 70 75 74 5F 73 68 6F 72 74 5F 33 3B 00 
+// parsed: offset 345, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 365, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 368, len 21: TYPE_STRING_DATA_ITEM [4] "T_iput_short_3.java"
+    13 54 5F 69 70 75 74 5F 73 68 6F 72 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 397, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    // parsed: offset 404, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 405, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 406, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 407, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 408, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 410, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 411, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 414, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 417, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 418, len 2: code_off: 260 (0x000104)
+                84 02 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 20 00 00 01 00 00 00 94 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d
new file mode 100644
index 0000000..51d2ea8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_30.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_30
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_short/d/T_iput_short_30
+    const v1, 0
+    iput-short v1, v0, dot.junit.opcodes.iput_short.d.T_iput_short_30.st_i1 S
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d
new file mode 100644
index 0000000..f201a30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_4.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_4
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-short v3, v2, dot.junit.opcodes.iput_short.d.T_iput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d
new file mode 100644
index 0000000..ba79d41
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_6.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_6
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       iput-short v0, v2, dot.junit.opcodes.iput_short.d.T_iput_short_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d
new file mode 100644
index 0000000..b395108
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_7.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_7
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_7.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.java
new file mode 100644
index 0000000..6969f12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d
new file mode 100644
index 0000000..05b5100
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_8.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_short/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/TestStubs/<init>()V
+
+       const v1, 0
+       iput-short v1, v0, dot.junit.opcodes.iput_short.TestStubs.TestStubField S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.java
new file mode 100644
index 0000000..689c54b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d
new file mode 100644
index 0000000..1a1555e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_9.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_9
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_9noclass.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.java
new file mode 100644
index 0000000..7f81b96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/TestStubs.java
new file mode 100644
index 0000000..617b87f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide;
+
+public class TestStubs {
+    // used by testVFE9
+    protected long TestStubField = 0;
+    
+    // used by testE5
+    public final long TestStubFieldFinal = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/Test_iput_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/Test_iput_wide.java
new file mode 100644
index 0000000..a61bb70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/Test_iput_wide.java
@@ -0,0 +1,347 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_1;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_10;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_11;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_12;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_13;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_14;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_15;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_17;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_5;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_7;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_8;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_9;
+
+public class Test_iput_wide extends DxTestCase {
+    /**
+     * @title put long into field
+     */
+    public void testN1() {
+        T_iput_wide_1 t = new T_iput_wide_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(778899112233l, t.st_i1);
+    }
+
+    /**
+     * @title put double into field
+     */
+    public void testN2() {
+        T_iput_wide_5 t = new T_iput_wide_5();
+        assertEquals(0.0d, t.st_i1);
+        t.run();
+        assertEquals(0.5d, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_iput_wide_12 t = new T_iput_wide_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_1
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_14
+        T_iput_wide_14 t = new T_iput_wide_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_wide_13 t = new T_iput_wide_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put int into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_wide_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify float
+     * field with double-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_wide_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_wide.TestStubs
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_8
+        try {
+            new T_iput_wide_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_wide_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_wide_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_1
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_15
+        try {
+            new T_iput_wide_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput-wide shall not work for single-width numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.iput_wide.TestStubs
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_11
+        try {
+            new T_iput_wide_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d
new file mode 100644
index 0000000..cae692f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_1.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_1
+.super java/lang/Object
+
+.field public  st_i1 J
+.field protected  st_p1 J
+.field private  st_pvt1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()J
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_pvt1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 778899112233
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.java
new file mode 100644
index 0000000..be11462
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_1 {
+    public  long st_i1;
+    protected  long st_p1;
+    private  long st_pvt1;
+    
+    public void run() {
+        st_i1 = 778899112233l;
+    }
+    
+    public  long getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d
new file mode 100644
index 0000000..1ba4cac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_10.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_10
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_10.st_i1N J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.java
new file mode 100644
index 0000000..9653b55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d
new file mode 100644
index 0000000..d3401d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_11.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       new-instance v0, Ldot/junit/opcodes/iput_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/TestStubs/<init>()V
+       
+       const-wide v1, 1
+       iput-wide v1, v0, dot.junit.opcodes.iput_wide.TestStubs.TestStubFieldFinal J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.java
new file mode 100644
index 0000000..327d5bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d
new file mode 100644
index 0000000..a386a54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_12.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_12
+.super java/lang/Object
+
+.field public  final st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 77
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_12.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.java
new file mode 100644
index 0000000..d2d6998
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_12 {
+    public  long st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d
new file mode 100644
index 0000000..cdf7fe6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_13.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_13
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v2, 0
+       const-wide v0, 778899112233
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_13.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.java
new file mode 100644
index 0000000..6053aec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+
+public class T_iput_wide_13 {
+    
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d
new file mode 100644
index 0000000..22bafcf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_14.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_14
+.super dot/junit/opcodes/iput_wide/d/T_iput_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/d/T_iput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()J
+.limit regs 2
+
+       iget-wide v0, v1, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_p1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 77
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_p1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.java
new file mode 100644
index 0000000..f0fb8d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_14 extends T_iput_wide_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public  long getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d
new file mode 100644
index 0000000..4e8b2ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_15.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_15
+.super dot/junit/opcodes/iput_wide/d/T_iput_wide_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/d/T_iput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_pvt1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.java
new file mode 100644
index 0000000..9818c22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d
new file mode 100644
index 0000000..058d1dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_17.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_17
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_17.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.java
new file mode 100644
index 0000000..60c005e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d
new file mode 100644
index 0000000..1818bed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_18.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_18
+.super java/lang/Object
+
+.field public  st_i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1.0
+       iput-wide v1, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_18.st_i1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d
new file mode 100644
index 0000000..8d6dc36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_2.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_2
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d
new file mode 100644
index 0000000..e0efb25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_20.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v0, 0
+
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d
new file mode 100644
index 0000000..064a9a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_21.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_21
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 12    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d
new file mode 100644
index 0000000..80a827d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_22.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d
new file mode 100644
index 0000000..d37bbd0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_23.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_23
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d
new file mode 100644
index 0000000..3f0102f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_24.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d
new file mode 100644
index 0000000..fc4dc02
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_3.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_3
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_3.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dfh
new file mode 100644
index 0000000..a0ada5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dex'...
+// Opened 'dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 71754517
+    17 45 75 71 
+// parsed: offset 12, len 20: signature           : e67a...82a9
+    E6 7A EF BD 44 34 8E F6 ED DF 42 B2 5F 27 17 2B 1D B9 82 A9 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "J"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 370 (0x000172) "T_iput_wide_3.java"
+    72 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 398 (0x00018e) "st_i1"
+    8E 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_wide_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_wide.d.T_iput_wide_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_wide.d.T_iput_wide_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 276, len 10: |0000: const-wide v0, #double 0.000000 // #0x0000000000000001 long
+            18 00 01 00 00 00 00 00 00 00 
+        // parsed: offset 286, len 4: |0005: iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;.st_i1:J // field@0000
+//@mod            5A 20 00 00 
+            5A 20 00 01 
+        // parsed: offset 290, len 2: |0007: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 303, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 77 69 64 65 2F 64 2F 54 5F 69 70 75 74 5F 77 69 64 65 5F 33 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 20: TYPE_STRING_DATA_ITEM [4] "T_iput_wide_3.java"
+    12 54 5F 69 70 75 74 5F 77 69 64 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 398, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 409, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 410, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 411, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 412, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 415, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 417, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 418, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 419, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 421, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d
new file mode 100644
index 0000000..9513dc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_30.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_30
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_wide/d/T_iput_wide_30
+    const-wide v1, 0
+    iput-wide v1, v0, dot.junit.opcodes.iput_wide.d.T_iput_wide_30.st_i1 J
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d
new file mode 100644
index 0000000..6036cc6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_4.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_4
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-wide v3, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d
new file mode 100644
index 0000000..3c1d9ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_5.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_5
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 0.5
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_5.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.java
new file mode 100644
index 0000000..a508e8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_5 {
+    public  double st_i1;
+    
+    public void run() {
+        st_i1 = 0.5d;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d
new file mode 100644
index 0000000..31f4f12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_6.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_6
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d
new file mode 100644
index 0000000..df5079c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_7.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_7
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 0
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_7.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.java
new file mode 100644
index 0000000..e476c01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d
new file mode 100644
index 0000000..12a0d92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_8.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       new-instance v0, Ldot/junit/opcodes/iput_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/TestStubs/<init>()V
+       
+       const-wide v1, 0
+       iput-wide v1, v0, dot.junit.opcodes.iput_wide.TestStubs.TestStubField J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.java
new file mode 100644
index 0000000..dc2e2bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d
new file mode 100644
index 0000000..aecd210
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_9.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_9
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 0
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_9noclass.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.java
new file mode 100644
index 0000000..c9d1da2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/Test_long_to_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/Test_long_to_double.java
new file mode 100644
index 0000000..fb55b8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/Test_long_to_double.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.long_to_double.d.T_long_to_double_1;
+import dot.junit.opcodes.long_to_double.d.T_long_to_double_6;
+
+public class Test_long_to_double extends DxTestCase {
+    /**
+     * @title Argument = 50000000000
+     */
+    public void testN1() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(5.0E10d, t.run(50000000000l), 0d);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(1d, t.run(1l), 0d);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(-1d, t.run(-1l), 0d);
+    }
+
+    /**
+     * @title Type of argument - double. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of double to double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_long_to_double_6 t = new T_long_to_double_6();
+        try {
+            t.run(12345);
+        } catch (Throwable e) {
+        }
+    }       
+    
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(9.223372036854776E18d, t.run(Long.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(-9.223372036854776E18, t.run(Long.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(0d, t.run(0), 0d);
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d
new file mode 100644
index 0000000..d1e068c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_1.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.java
new file mode 100644
index 0000000..f1ce414
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_double.d;
+
+public class T_long_to_double_1 {
+
+    public double run(long a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d
new file mode 100644
index 0000000..3201a77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_2.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       const v6, 3.1415
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d
new file mode 100644
index 0000000..83c423c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_3.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       const v6, 1234
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d
new file mode 100644
index 0000000..03bc7bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_4.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       long-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d
new file mode 100644
index 0000000..6656834
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_5.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       long-to-double v0, v8
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d
new file mode 100644
index 0000000..8e430fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_6.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.java
new file mode 100644
index 0000000..f676c16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_double.d;
+
+public class T_long_to_double_6 {
+
+    public double run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/Test_long_to_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/Test_long_to_float.java
new file mode 100644
index 0000000..1e06437
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/Test_long_to_float.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.long_to_float.d.T_long_to_float_1;
+import dot.junit.opcodes.long_to_float.d.T_long_to_float_2;
+
+public class Test_long_to_float extends DxTestCase {
+    /**
+     * @title Argument = 123456789012345
+     */
+    public void testN1() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(1.23456788E14f, t.run(123456789012345l), 0f);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(1f, t.run(1l), 0f);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(-1f, t.run(-1l), 0f);
+    }
+
+    /**
+     * @title Type of argument - double. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of double to double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_long_to_float_2 t = new T_long_to_float_2();
+        try {
+            t.run(12345);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(9.223372036854776E18, t.run(Long.MAX_VALUE), 0f);
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(-9.223372036854776E18, t.run(Long.MIN_VALUE), 0f);
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(0f, t.run(0l), 0f);
+    }
+
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_float.d.T_long_to_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_float.d.T_long_to_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_float.d.T_long_to_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d
new file mode 100644
index 0000000..3f0602b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_float_1.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.java
new file mode 100644
index 0000000..67eca97
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_float.d;
+
+public class T_long_to_float_1 {
+
+    public float run(long a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d
new file mode 100644
index 0000000..0f4a557
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_float_2.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.java
new file mode 100644
index 0000000..409d2ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_float.d;
+
+public class T_long_to_float_2 {
+
+    public float run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d
new file mode 100644
index 0000000..002e5d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_float_3.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       const v6, 1234
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d
new file mode 100644
index 0000000..acb99d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_float_4.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       long-to-float v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d
new file mode 100644
index 0000000..5cb993e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_float_5.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       long-to-float v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/Test_long_to_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/Test_long_to_int.java
new file mode 100644
index 0000000..2440fa5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/Test_long_to_int.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.long_to_int.d.T_long_to_int_1;
+import dot.junit.opcodes.long_to_int.d.T_long_to_int_2;
+
+public class Test_long_to_int extends DxTestCase {
+    /**
+     * @title Argument = 0xAAAAFFEEDDCCl
+     */
+    public void testN1() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(0xFFEEDDCC, t.run(0xAAAAFFEEDDCCl));
+    }
+
+    /**
+     * @title Argument = -123456789
+     */
+    public void testN2() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(-123456789, t.run(-123456789l));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN3() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(1, t.run(1l));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN4() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(-1, t.run(-1l));
+    }
+    
+    /**
+     * @title Type of argument - double. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of double to int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_long_to_int_2 t = new T_long_to_int_2();
+        try {
+            t.run(12345);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(-1, t.run(Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(0, t.run(Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(0, t.run(0l));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d
new file mode 100644
index 0000000..2f73956
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_1.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.java
new file mode 100644
index 0000000..77f6c5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_int.d;
+
+public class T_long_to_int_1 {
+
+    public int run(long a) {
+        return (int) a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d
new file mode 100644
index 0000000..1732d7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_2.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.java
new file mode 100644
index 0000000..97b9ac4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_int.d;
+
+public class T_long_to_int_2 {
+
+    public int run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d
new file mode 100644
index 0000000..1d4665b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_3.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       const v6, 1234.0
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d
new file mode 100644
index 0000000..50e5889
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_4.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       long-to-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d
new file mode 100644
index 0000000..5b65864
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_5.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       long-to-int v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d
new file mode 100644
index 0000000..ad412f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_6.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+       move v0, v7
+       move v1, v7
+       long-to-int v0, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/Test_monitor_enter.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/Test_monitor_enter.java
new file mode 100644
index 0000000..3608793
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/Test_monitor_enter.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_enter;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1;
+import dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2;
+import dot.junit.opcodes.monitor_enter.d.T_monitor_enter_3;
+
+public class Test_monitor_enter extends DxTestCase {
+
+    /**
+     * @title tests monitor-enter functionality
+     * 
+     * @throws InterruptedException
+     */
+    public void testN1() throws InterruptedException {
+        //@uses dot.junit.opcodes.monitor_enter.TestRunnable
+        final T_monitor_enter_1 t1 = new T_monitor_enter_1();
+        Runnable r1 = new TestRunnable(t1);
+        Runnable r2 = new TestRunnable(t1);
+        Thread tr1 = new Thread(r1);
+        Thread tr2 = new Thread(r2);
+        tr1.start();
+        tr2.start();
+
+        tr1.join();
+        tr2.join();
+        assertEquals(2, t1.counter);
+    }
+
+    /**
+     * @title Tests behavior when monitor owned by current thread.
+     * 
+     * @throws InterruptedException
+     */
+    public void testN2() throws InterruptedException {
+        //@uses dot.junit.opcodes.monitor_enter.TestRunnable2
+        final T_monitor_enter_2 t1 = new T_monitor_enter_2();
+        Runnable r1 = new TestRunnable2(t1, 10);
+        Runnable r2 = new TestRunnable2(t1, 20);
+        Thread tr1 = new Thread(r1);
+        Thread tr2 = new Thread(r2);
+        tr1.start();
+        tr2.start();
+
+        tr1.join();
+        tr2.join();
+        assertTrue(t1.result);
+    }
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_monitor_enter_3 t = new T_monitor_enter_3();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
+
+class TestRunnable implements Runnable {
+    private T_monitor_enter_1 t1;
+    TestRunnable(T_monitor_enter_1 t1) {
+        this.t1 = t1;
+    }
+    
+    public void run() {
+        try {
+            t1.run();
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted!");
+        }
+    }
+}
+
+class TestRunnable2 implements Runnable {
+    private T_monitor_enter_2 t2;
+    private int val;
+    TestRunnable2(T_monitor_enter_2 t2, int val) {
+        this.t2 = t2;
+        this.val = val;
+    }
+    
+    public void run() {
+        try {
+            t2.run(val);
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted!");
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d
new file mode 100644
index 0000000..eb443b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d
@@ -0,0 +1,63 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_1.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1
+.super java/lang/Object
+
+.field public counter I
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+
+       const/4 v0, 0
+
+       iput v0, v1, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+       monitor-enter v7
+Label8:
+       iget v1, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+
+       const-wide/16 v3, 500
+       invoke-static {v3, v4}, java/lang/Thread/sleep(J)V
+       
+       iget v2, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       
+       if-ne v1, v2, Label0
+       
+       add-int/lit8 v1, v1, 1
+       iput v1, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       monitor-exit v7
+Label24:
+       return-void
+Label0:
+       const/4 v5, -1
+       iput v5, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       monitor-exit v7
+       return-void
+       
+Label25:
+       move-exception v3
+       monitor-exit v7
+       const/4 v5, -1
+       iput v5, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       throw v3
+.catch all from Label8 to Label24 using Label25
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.java
new file mode 100644
index 0000000..39113fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_1 {
+    public int counter = 0;
+    
+    public void run() throws InterruptedException  {
+        synchronized(this) {
+            int a = counter;
+            Thread.sleep(500);
+            counter = ++a;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d
new file mode 100644
index 0000000..2e7fc6f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d
@@ -0,0 +1,85 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_2.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2
+.super java/lang/Object
+
+.field private flg I
+.field public result Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 0
+       iput v2, v3, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.flg I
+
+       const/4 v2, 1
+       iput-boolean v2, v3, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.result Z
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 10
+
+       monitor-enter v8
+Label13:
+       monitor-enter v8
+Label14:
+
+       iput v9, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.flg I
+       
+Label16:
+       monitor-exit v8
+Label20:
+
+       const-wide/16 v4, 500
+
+Label22:
+       invoke-static {v4, v5}, java/lang/Thread/sleep(J)V
+Label23:
+
+       iget v1, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.flg I
+
+       if-eq v1, v9, Label35
+
+       const/4 v5, 0
+       iput-boolean v5, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.result Z
+       
+Label35:
+       monitor-exit v8
+Label37:
+       return-void
+       
+       
+Label46:
+       move-exception v4
+
+       const/4 v6, 0
+       iput-boolean v6, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.result Z
+
+       monitor-exit v8
+Label53:
+       throw v4
+       
+.catch all from Label13 to Label14 using Label46
+.catch all from Label16 to Label20 using Label46
+.catch all from Label22 to Label23 using Label46
+.catch all from Label35 to Label37 using Label46
+.catch all from Label46 to Label53 using Label46
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.java
new file mode 100644
index 0000000..d2f5add
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_2 {
+
+     private int flg = 0;
+     public boolean result = true;
+        
+     public void run(int v) throws InterruptedException  {
+         synchronized(this) {
+             synchronized(this) {
+                 flg = v;
+             }
+             Thread.sleep(500);
+             if(flg != v) {
+                 result = false;
+             }
+         }
+     }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
new file mode 100644
index 0000000..7417a8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_3.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const/4 v5, 0
+       monitor-enter v5
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.java
new file mode 100644
index 0000000..ebb0f17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_3 {
+
+    public void run() {
+        Object o = null;
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d
new file mode 100644
index 0000000..5b3469d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_4.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       monitor-enter v6
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.java
new file mode 100644
index 0000000..83c41d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_4 {
+
+    public void run() {
+        Object o = null;
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d
new file mode 100644
index 0000000..7078aa0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_5.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v5, 12345
+       monitor-enter v5
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d
new file mode 100644
index 0000000..754a9e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_6.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v5, 1.23
+       monitor-enter v5
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d
new file mode 100644
index 0000000..8fb7791
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_7.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const-wide v4, 123456789321
+       monitor-enter v4
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d
new file mode 100644
index 0000000..3d45716
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_8.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const-wide v4, 1.79
+       monitor-enter v4
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/Test_monitor_exit.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/Test_monitor_exit.java
new file mode 100644
index 0000000..d4f5842
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/Test_monitor_exit.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_exit;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.monitor_exit.d.T_monitor_exit_1;
+import dot.junit.opcodes.monitor_exit.d.T_monitor_exit_3;
+
+public class Test_monitor_exit extends DxTestCase {
+
+    /**
+     * @title thread is not monitor owner
+     */
+    public void testE1() throws InterruptedException {
+        //@uses dot.junit.opcodes.monitor_exit.TestRunnable
+        final T_monitor_exit_1 t = new T_monitor_exit_1();
+        final Object o = new Object();
+
+        Runnable r = new TestRunnable(t, o);
+        synchronized (o) {
+            Thread th = new Thread(r);
+            th.start();
+            th.join();
+        }
+        if (t.result == false) {
+            fail("expected IllegalMonitorStateException");
+        }
+    }
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_monitor_exit_3 t = new T_monitor_exit_3();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  type of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of arguments - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of arguments - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of arguments - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
+
+
+class TestRunnable implements Runnable {
+    private T_monitor_exit_1 t;
+    private Object o;
+
+    public TestRunnable(T_monitor_exit_1 t, Object o) {
+        this.t = t;
+        this.o = o;
+    }
+
+    public void run() {
+        try {
+            t.run(o);
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+            t.result = true;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
new file mode 100644
index 0000000..bef8390
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_1.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_1
+.super java/lang/Object
+
+.field public result Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 1
+       iput-boolean v2, v3, dot.junit.opcodes.monitor_exit.d.T_monitor_exit_1.result Z
+
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       monitor-exit v3
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.java
new file mode 100644
index 0000000..ff61a53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_exit.d;
+
+public class T_monitor_exit_1 {
+
+    public boolean result = false;
+    
+    public void run(Object o) {
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d
new file mode 100644
index 0000000..9ef4034
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_3.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+
+       const/4 v1, 0
+Label4:
+       monitor-exit v1
+Label5:
+       return-void
+Label6:
+       move-exception v1
+       monitor-exit v3
+       throw v1
+.catch all from Label4 to Label5 using Label6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.java
new file mode 100644
index 0000000..162dd58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_exit.d;
+
+public class T_monitor_exit_3 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d
new file mode 100644
index 0000000..334f385
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_4.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       monitor-exit v4
+
+       return-void       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d
new file mode 100644
index 0000000..9def3d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_5.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const v3, 12345
+       monitor-exit v3
+       return-void       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d
new file mode 100644
index 0000000..9635212
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_6.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const v3, 1.123
+       monitor-exit v3
+       return-void       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d
new file mode 100644
index 0000000..c65ae56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_7.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const-wide v0, 123456789321
+       monitor-exit v0
+       return-void       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d
new file mode 100644
index 0000000..91be219
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_8.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const-wide v0, 1.79
+       monitor-exit v0
+       return-void       
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/Test_move.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move/Test_move.java
new file mode 100644
index 0000000..d503890
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/Test_move.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move.d.T_move_1;
+
+public class Test_move extends DxTestCase {
+    /**
+     * @title test move functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_1.run());
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.d
new file mode 100644
index 0000000..1d8e693
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_1.java
+.class public dot.junit.opcodes.move.d.T_move_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+       const v0, 1234
+       const v15, 567989
+
+       move v0, v15
+       
+       const v4, 567989
+
+       if-ne v0, v4, Label0
+       if-ne v15, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.java
new file mode 100644
index 0000000..97f538f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move.d;
+
+public class T_move_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_2.d
new file mode 100644
index 0000000..4a5dfc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_2.java
+.class public dot.junit.opcodes.move.d.T_move_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+
+       move v0, v9
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.d
new file mode 100644
index 0000000..c9d094b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_3.java
+.class public dot.junit.opcodes.move.d.T_move_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+       const v0, 0
+
+       move v15, v0
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.d
new file mode 100644
index 0000000..54adf05
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_4.java
+.class public dot.junit.opcodes.move.d.T_move_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       move v1, v8
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.d
new file mode 100644
index 0000000..1ab33b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_5.java
+.class public dot.junit.opcodes.move.d.T_move_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+       const-wide v0, 124
+
+       move v5, v0
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.d
new file mode 100644
index 0000000..91da915
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_6.java
+.class public dot.junit.opcodes.move.d.T_move_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+       const-wide v0, 124
+
+       move v5, v1
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.d
new file mode 100644
index 0000000..fa615c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_7.java
+.class public dot.junit.opcodes.move.d.T_move_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 9
+       const-wide v0, 124
+       const v5, 0
+
+       move v1, v5
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/Test_move_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/Test_move_16.java
new file mode 100644
index 0000000..f3e2ab0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/Test_move_16.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_16.d.T_move_16_1;
+import dot.junit.opcodes.move_16.d.T_move_16_2;
+
+public class Test_move_16 extends DxTestCase {
+    /**
+     * @title v4001 -> v4000
+     */
+    public void testN1() {
+        assertTrue(T_move_16_1.run());
+    }
+    
+    /**
+     * @title v1 -> v4001
+     */
+    public void testN2() {
+        assertTrue(T_move_16_2.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.d
new file mode 100644
index 0000000..bb5335f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_1.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const v0, 123
+       const v1, 5678
+       
+       move/16 v4000, v0
+       move/16 v4001, v1
+       
+       move/16 v4000, v4001
+       
+       const/4 v4, 5678
+       
+       move/16 v0, v4000
+       move/16 v1, v4001
+
+       if-ne v0, v4, Label0
+       if-ne v1, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.java
new file mode 100644
index 0000000..203468b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_16.d;
+
+public class T_move_16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.d
new file mode 100644
index 0000000..52454ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_2.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const v1, 5678
+       
+       move/16 v4001, v1
+       move/16 v0, v4001
+       
+       const/4 v4, 5678
+
+       if-ne v0, v4, Label0
+       if-ne v1, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.java
new file mode 100644
index 0000000..4729303
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_16.d;
+
+public class T_move_16_2 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.d
new file mode 100644
index 0000000..604cbf3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_3.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       move/16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.d
new file mode 100644
index 0000000..2c098a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_4.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const v0, 0
+       move/16 v5000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.d
new file mode 100644
index 0000000..ccacc33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_5.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move/16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.d
new file mode 100644
index 0000000..eb4b9c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_6.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v123, 123
+       move/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.d
new file mode 100644
index 0000000..a6aa1d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_7.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v123, 123
+       move/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.d
new file mode 100644
index 0000000..8d98954
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_8.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const v0, 0
+       move/16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/Test_move_exception.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/Test_move_exception.java
new file mode 100644
index 0000000..b4fd87c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/Test_move_exception.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_exception;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_exception.d.T_move_exception_1;
+import dot.junit.opcodes.move_exception.d.T_move_exception_2;
+
+public class Test_move_exception extends DxTestCase {
+    
+    /**
+     * @title tests move-exception functionality
+     */
+    public void testN1() {
+        T_move_exception_1 t = new T_move_exception_1();
+        try {
+            t.run();
+            fail("ArithmeticException was not thrown");
+        } catch (ArithmeticException ae) {
+            //expected
+        } catch (Exception ex) {
+            fail("Exception " + ex + " was thrown instead off ArithmeticException");
+        }
+    }
+    
+    /**
+     * @title tests move-exception functionality
+     */
+    public void testN2() {
+        T_move_exception_2 t = new T_move_exception_2();
+        assertTrue(t.run());
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_exception.d.T_move_exception_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B21 
+     * @title  move-exception is not first instruction in an exception handler
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_exception.d.T_move_exception_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d
new file mode 100644
index 0000000..ed7aa2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_exception_1.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+Label1:
+       const v1, 15
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       move-exception v3
+       throw v3
+
+Label4:
+       return-void
+
+.catch all from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java
new file mode 100644
index 0000000..9edf6ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_exception.d;
+
+public class T_move_exception_1 {
+    
+    public void run() {
+        try{
+            int a = 15/0;
+        } catch(Exception ex) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d
new file mode 100644
index 0000000..8713f3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_exception_2.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 6
+
+Label1:
+       const v1, 1
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       move-exception v3
+       const v4, 1
+       return v4
+
+Label4:
+       const v4, 0
+       return v4
+
+.catch java/lang/RuntimeException from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java
new file mode 100644
index 0000000..ed66c22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_exception.d;
+
+public class T_move_exception_2 {
+    
+    public boolean run() {
+        try {
+            int a = 15/0;
+        } catch (ArithmeticException ae) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d
new file mode 100644
index 0000000..8141ddb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d
@@ -0,0 +1,31 @@
+.source T_move_exception_3.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+Label1:
+       const v1, 1
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       move-exception v6
+
+Label4:
+       return-void
+
+.catch all from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d
new file mode 100644
index 0000000..fdad390
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_exception_5.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+Label1:
+       const v1, 15
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       nop
+       move-exception v3
+       throw v3
+
+Label4:
+       return-void
+
+.catch all from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/Test_move_from16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/Test_move_from16.java
new file mode 100644
index 0000000..725cbd8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/Test_move_from16.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_from16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_from16.d.T_move_from16_1;
+
+public class Test_move_from16 extends DxTestCase {
+    /**
+     * @title v4001 -> v255 -> v1
+     */
+    public void testN1() {
+        assertTrue(T_move_from16_1.run());
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d
new file mode 100644
index 0000000..e445cea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_1.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const v10, 5678
+   
+       move/16 v4001, v10
+       
+       move/from16 v255, v4001
+       move/from16 v1, v255
+       
+       const/4 v4, 5678
+       
+       if-ne v1, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.java
new file mode 100644
index 0000000..a32e85c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_from16.d;
+
+public class T_move_from16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d
new file mode 100644
index 0000000..88b3cae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_3.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       move/from16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d
new file mode 100644
index 0000000..e544a14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_4.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5
+       const v1, 0    
+       move/from16 v5, v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d
new file mode 100644
index 0000000..400a01f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_5.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move/from16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d
new file mode 100644
index 0000000..662e314
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_6.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v4500, 123
+       move/from16 v0, v4500
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d
new file mode 100644
index 0000000..7d2f26c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_7.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v1234, 123
+       move/from16 v255, v1235
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d
new file mode 100644
index 0000000..5f8455a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_8.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const v0, 0
+       move/from16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/Test_move_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/Test_move_object.java
new file mode 100644
index 0000000..d67be88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/Test_move_object.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_object.d.T_move_object_1;
+
+public class Test_move_object extends DxTestCase {
+    /**
+     * @title tests move-object functionality
+     */
+    public void testN1() {
+        T_move_object_1 t = new T_move_object_1(); 
+        assertEquals(t.run(), t);
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title  number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.d
new file mode 100644
index 0000000..cc90a5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_1.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 16
+
+       move-object v0, v15
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.java
new file mode 100644
index 0000000..c0b2483
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object.d;
+
+public class T_move_object_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.d
new file mode 100644
index 0000000..4df3976
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_2.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+
+.method public run()V
+.limit regs 9
+
+       move-object v15, v8
+
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.d
new file mode 100644
index 0000000..647a220
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_3.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+
+       move-object v1, v15
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.d
new file mode 100644
index 0000000..f5538f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_4.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       const v0, 1
+       move-object v1, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.d
new file mode 100644
index 0000000..d7951a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_5.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       const-wide v0, 124
+
+       move-object v5, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.d
new file mode 100644
index 0000000..7db5136
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_6.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       const-wide v0, 124
+
+       move-object v5, v1
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.d
new file mode 100644
index 0000000..0fe5509
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_7.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 9
+       const-wide v0, 124
+
+       move-object v1, v8
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/Test_move_object_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/Test_move_object_16.java
new file mode 100644
index 0000000..c3780cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/Test_move_object_16.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_object_16.d.T_move_object_16_1;
+
+public class Test_move_object_16 extends DxTestCase {
+    /**
+     * @title v4999 -> v4000 -> v1
+     */
+    public void testN1() {
+        T_move_object_16_1 t = new T_move_object_16_1(); 
+        assertEquals(t.run(), t);
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d
new file mode 100644
index 0000000..b60a448
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_1.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5000
+       move-object/16 v4000, v4999
+       move-object/16 v1, v4000
+
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.java
new file mode 100644
index 0000000..d0b85bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object_16.d;
+
+public class T_move_object_16_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d
new file mode 100644
index 0000000..aad9893
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_3.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move-object/16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d
new file mode 100644
index 0000000..463646c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_4.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+       move-object/16 v6, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d
new file mode 100644
index 0000000..8cceaff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_5.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       const v0, 1234    
+       move-object/16 v2000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d
new file mode 100644
index 0000000..6a5035d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_6.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       const-wide v123, 123
+       move-object/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d
new file mode 100644
index 0000000..0fce2b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_7.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+
+       const-wide v123, 123
+       move-object/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d
new file mode 100644
index 0000000..8f0d925
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_8.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       move-object/16 v124, v4999
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/Test_move_object_from16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/Test_move_object_from16.java
new file mode 100644
index 0000000..2fe17d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/Test_move_object_from16.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object_from16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_object_from16.d.T_move_object_from16_1;
+
+
+public class Test_move_object_from16 extends DxTestCase {
+    /**
+     * @title v4999 -> v255 -> v1
+     */
+    public void testN1() {
+        T_move_object_from16_1 t = new T_move_object_from16_1(); 
+        assertEquals(t.run(), t);
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d
new file mode 100644
index 0000000..434737e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_1.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5000
+       move-object/from16 v255, v4999
+       move-object/from16 v1, v255
+       
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.java
new file mode 100644
index 0000000..75f4bac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object_from16.d;
+
+public class T_move_object_from16_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d
new file mode 100644
index 0000000..c2f4512
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_3.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move/from16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d
new file mode 100644
index 0000000..360ae14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_4.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       move-object/from16 v5, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d
new file mode 100644
index 0000000..94acfb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_5.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       const v1, 1234
+       move-object/from16 v0, v1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d
new file mode 100644
index 0000000..d41f1f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_6.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v4500, 123
+       move-object/from16 v0, v4500
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d
new file mode 100644
index 0000000..09abc65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_7.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v1234, 123
+       move-object/from16 v255, v1235
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d
new file mode 100644
index 0000000..93ff685
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_8.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       move-object/from16 v124, v4999
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/Test_move_result.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/Test_move_result.java
new file mode 100644
index 0000000..9a0eaba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/Test_move_result.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_result.d.T_move_result_1;
+
+public class Test_move_result extends DxTestCase {
+    /**
+     * @title tests move-result functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_result_1.run());
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title number of registers - dest is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title wide
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B19 
+     * @title  move-result instruction must be immediately preceded 
+     * (in the insns array) by an <invoke-kind> instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B20 
+     * @title move-result instruction must be immediately preceded 
+     * (in actual control flow) by an <invoke-kind> instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.d
new file mode 100644
index 0000000..50c2eb2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.d
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_1.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_1/foo()I
+
+    move-result v0
+    const v1, 12345
+    
+    if-eq v0, v1 Label1
+    
+    const v0, 0
+    return v0
+    
+Label1:
+    const v0, 1
+    return v0
+
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.java
new file mode 100644
index 0000000..0f97613
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result.d;
+
+public class T_move_result_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.d
new file mode 100644
index 0000000..ad1b45c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_2.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_2/foo()I
+    move-result v16
+    
+    return-void
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.d
new file mode 100644
index 0000000..481f158
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_3.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result/d/T_move_result_3/foo()Ljava/lang/Object;
+    move-result v0
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.d
new file mode 100644
index 0000000..655aa7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_4.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result/d/T_move_result_4/foo()J
+    move-result v0
+    
+    return-void
+.end method
+
+.method private foo()J
+.limit regs 2
+
+    const-wide v0, 1234
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.d
new file mode 100644
index 0000000..711b142
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_5.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 16
+
+    const-wide v0, 123
+
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_5/foo()I
+    move-result v1
+    
+    return-wide v0
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.d
new file mode 100644
index 0000000..9afeb48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_6.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_6/foo()I
+    nop
+    move-result v1
+    
+    return-void
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.d
new file mode 100644
index 0000000..aaea908
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_7.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    goto Label1
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_7/foo()I
+Label1:
+    move-result v1
+    
+    return-void
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.d
new file mode 100644
index 0000000..da32cd0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_8.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_8/foo()I
+
+    move-result v16
+    return-void
+
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/Test_move_result_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/Test_move_result_object.java
new file mode 100644
index 0000000..9ee2ed1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/Test_move_result_object.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_result_object.d.T_move_result_object_1;
+import dot.junit.opcodes.move_result_object.d.T_move_result_object_8;
+
+public class Test_move_result_object extends DxTestCase {
+    /**
+     * @title tests move-result-object functionality
+     */
+    public void testN1() {
+        T_move_result_object_1 t = new T_move_result_object_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title filled-new-array result
+     */
+    public void testN2() {
+        T_move_result_object_8 t = new T_move_result_object_8();
+        int[] arr = t.run();
+        if(arr.length != 2 || arr[0] != 1 || arr[1] != 2)
+            fail("wrong array size or content");
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers - dest is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title wide
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B19 
+     * @title  move-result-object instruction must be immediately preceded 
+     * (in the insns array) by an <invoke-kind> instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B20
+     * @title move-result-object instruction must be immediately preceded 
+     * (in actual control flow) by an <invoke-kind> instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d
new file mode 100644
index 0000000..433b86f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_1.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_1/foo()Ljava/lang/Object;
+
+    move-result-object v0
+    
+    if-eq v0, v15, Label1
+
+    const v0, 0
+    return v0
+    
+Label1:
+    const v0, 1
+    return v0
+
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.java
new file mode 100644
index 0000000..76cdb0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result_object.d;
+
+public class T_move_result_object_1 {
+
+    public boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d
new file mode 100644
index 0000000..22c1b0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_2.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_2/foo()Ljava/lang/Object;
+    move-result-object v16
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d
new file mode 100644
index 0000000..a788844
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_3.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_3/foo()I
+    move-result-object v0
+    
+    return-void
+.end method
+
+.method private foo()I
+.limit regs 1
+     const v0, 1
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d
new file mode 100644
index 0000000..b3229b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_4.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_4/foo()J
+    move-result-object v0
+    
+    return-void
+.end method
+
+.method private foo()J
+.limit regs 2
+
+    const-wide v0, 1234
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d
new file mode 100644
index 0000000..6216f18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_5.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 16
+
+    const-wide v0, 123
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_5/foo()Ljava/lang/Object;
+    move-result-object v1
+    
+    return-wide v0
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d
new file mode 100644
index 0000000..8de3274
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_6.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_6/foo()Ljava/lang/Object;
+    nop
+    move-result-object v1
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d
new file mode 100644
index 0000000..088b386
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_7.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    goto Label1
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_7/foo()Ljava/lang/Object;
+Label1:
+    move-result-object v1
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d
new file mode 100644
index 0000000..0cbb044
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_8.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()[I
+.limit regs 16
+    const v1, 1
+    const v2, 2
+    filled-new-array {v1, v2}, [I
+    move-result-object v5
+    
+    return-object v5
+
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.java
new file mode 100644
index 0000000..3eb0ea1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result_object.d;
+
+public class T_move_result_object_8 {
+
+    public int[] run() {
+        int arr[] = new int[2];
+        arr[0] = 1;
+        arr[1] = 2;
+        return arr;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d
new file mode 100644
index 0000000..92600b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_9.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+    
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_9/foo()Ljava/lang/Object;
+
+    move-result-object v16
+    return-void
+
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/Test_move_result_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/Test_move_result_wide.java
new file mode 100644
index 0000000..6c849dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/Test_move_result_wide.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_result_wide.d.T_move_result_wide_1;
+
+public class Test_move_result_wide extends DxTestCase {
+    /**
+     * @title tests move-result-wide functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_result_wide_1.run());
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title  number of registers - dest is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  32-bit value
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B19 
+     * @title move-result-wide instruction must be immediately preceded 
+     * (in the insns array) by an <invoke-kind> instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B20 
+     * @title move-result-wide instruction must be immediately preceded 
+     * (in actual control flow) by an <invoke-kind> instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d
new file mode 100644
index 0000000..e0d80c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_1.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1/foo()J
+
+    move-result-wide v0
+    const-wide v2, 12345
+    
+    cmp-long v5, v0, v2
+    if-eqz v5, Label1
+    
+    const v0, 0
+    return v0
+    
+Label1:
+    const v0, 1
+    return v0
+
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.java
new file mode 100644
index 0000000..4c7ef16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result_wide.d;
+
+public class T_move_result_wide_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d
new file mode 100644
index 0000000..35eb63c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_2.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2/foo()J
+    move-result-wide v16
+    
+    return-void
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d
new file mode 100644
index 0000000..5f53fa3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_3.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3/foo()Ljava/lang/Object;
+    move-result-wide v0
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d
new file mode 100644
index 0000000..3c10cab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_4.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4/foo()I
+    move-result-wide v0
+    
+    return-void
+.end method
+
+.method private foo()I
+.limit regs 2
+
+    const v0, 1234
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d
new file mode 100644
index 0000000..9126ee2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_5.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 16
+
+    const-wide v0, 123
+
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5/foo()J
+    move-result-wide v1
+    
+    return-wide v0
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d
new file mode 100644
index 0000000..a499958
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_6.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6/foo()J
+    nop
+    move-result-wide v1
+    
+    return-void
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d
new file mode 100644
index 0000000..f6d47eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_7.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    goto Label1
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7/foo()J
+Label1:
+    move-result-wide v1
+    
+    return-void
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d
new file mode 100644
index 0000000..f385a2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_8.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8/foo()J
+
+    move-result-wide v16
+    return-void
+
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/Test_move_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/Test_move_wide.java
new file mode 100644
index 0000000..4ab7421
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/Test_move_wide.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_wide.d.T_move_wide_1;
+import dot.junit.opcodes.move_wide.d.T_move_wide_6;
+
+public class Test_move_wide extends DxTestCase {
+    /**
+     * @title tests move-wide functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_wide_1.run());
+    }
+
+    
+    /**
+     * @title v0 -> v1
+     */
+    public void testN2() {
+        assertEquals(T_move_wide_6.run(), 0);
+    }
+
+    /**
+     * @constraint A24
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  src register contains 32-bit value
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d
new file mode 100644
index 0000000..b0597f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_1.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+       const-wide v0, 1234
+       const-wide v14, 567989
+
+       move-wide v0, v14
+       
+       const-wide v4, 567989
+
+       cmp-long v10, v0, v4
+       if-nez v10, Label0
+       cmp-long v10, v14, v4
+       if-nez v10, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.java
new file mode 100644
index 0000000..8ddde82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide.d;
+
+public class T_move_wide_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d
new file mode 100644
index 0000000..22e992b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_2.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+
+       move-wide v0, v9
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d
new file mode 100644
index 0000000..b8e3db0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_3.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 9
+       const-wide v0, 0
+
+       move v9, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d
new file mode 100644
index 0000000..3eb95df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_4.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       move-wide v1, v8
+
+       const v1, 0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d
new file mode 100644
index 0000000..92e67dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_5.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 9
+       const v0, 124
+
+       move-wide v5, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d
new file mode 100644
index 0000000..4fecf88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_6.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 9
+       const-wide v0, 1233746384323
+
+       move-wide v1, v0
+       
+       const-wide v4, 1233746384323
+       cmp-long v8, v1, v4
+       
+       return v8
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.java
new file mode 100644
index 0000000..bd5de04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide.d;
+
+public class T_move_wide_6 {
+
+    public static int run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d
new file mode 100644
index 0000000..9324fef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_7.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 9
+       const-wide v0, 124
+       const-wide v5, 0
+
+       move-wide v1, v5
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/Test_move_wide_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/Test_move_wide_16.java
new file mode 100644
index 0000000..a2b776d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/Test_move_wide_16.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_wide_16.d.T_move_wide_16_1;
+import dot.junit.opcodes.move_wide_16.d.T_move_wide_16_9;
+
+public class Test_move_wide_16 extends DxTestCase {
+    /**
+     * @title v4001 -> v4000
+     */
+    public void testN1() {
+        assertTrue(T_move_wide_16_1.run());
+    }
+    
+    /**
+     * @title v1 -> v4001
+     */
+    public void testN2() {
+        assertTrue(T_move_wide_16_1.run());
+    }
+    
+    /**
+     * @title v1 -> v2
+     */
+    public void testN3() {
+        assertEquals(T_move_wide_16_9.run(), 0);
+    }
+
+    /**
+     * @constraint A24
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains 32-bit value
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d
new file mode 100644
index 0000000..282edb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_1.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const-wide v0, 123
+       const-wide v2, 5678
+       
+       move-wide/16 v4000, v0
+       move-wide/16 v4002, v2
+       
+       move-wide/16 v4000, v4002
+       
+       const-wide v4, 5678
+       
+       move-wide/16 v0, v4000
+       move-wide/16 v2, v4002
+
+       cmp-long v10, v0, v4
+       if-nez v10, Label0
+       cmp-long v10, v2, v4
+       if-nez v10, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.java
new file mode 100644
index 0000000..66b4da1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_16.d;
+
+public class T_move_wide_16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d
new file mode 100644
index 0000000..57c7c93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_2.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const-wide/16 v2, 5678
+       
+       move-wide/16 v4001, v2
+       move-wide/16 v0, v4001
+       
+       const-wide v4, 5678
+
+       cmp-long v10, v2, v4
+       if-nez v10, Label0
+       cmp-long v10, v0, v4
+       if-nez v10, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.java
new file mode 100644
index 0000000..e5f4966
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_16.d;
+
+public class T_move_wide_16_2 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d
new file mode 100644
index 0000000..e1e0ac7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_3.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       move-wide/16 v0, v5000
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d
new file mode 100644
index 0000000..3f12810
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_4.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v0, 0
+       move-wide/16 v5000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d
new file mode 100644
index 0000000..7e61df4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_5.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move-wide/16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d
new file mode 100644
index 0000000..2cea620
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_6.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const v123, 123
+       move-wide/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d
new file mode 100644
index 0000000..7826131
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_7.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v123, 123
+       move-wide/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d
new file mode 100644
index 0000000..c5e006d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_8.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const-wide v0, 0
+       move-wide/16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d
new file mode 100644
index 0000000..aa8cdce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_9.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 5000
+       const-wide v1, 1233746384323
+       move-wide/16 v2, v1
+
+       const-wide v10, 1233746384323
+       cmp-long v4, v2, v10
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.java
new file mode 100644
index 0000000..f66146b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_16.d;
+
+public class T_move_wide_16_9 {
+
+    public static int run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/Test_move_wide_from16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/Test_move_wide_from16.java
new file mode 100644
index 0000000..2434e92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/Test_move_wide_from16.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_from16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_1;
+import dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_2;
+
+public class Test_move_wide_from16 extends DxTestCase {
+    /**
+     * @title v4001 -> v255 -> v1
+     */
+    public void testN1() {
+        assertTrue(T_move_wide_from16_1.run());
+    }
+    
+    /**
+     * @title v100 -> 101
+     */
+    public void testN2() {
+        assertEquals(T_move_wide_from16_2.run(), 0);
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains 32-bit value
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d
new file mode 100644
index 0000000..21aaca8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_1.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const-wide v10, 5678233453
+   
+       move-wide/16 v4001, v10
+       
+       move-wide/from16 v255, v4001
+       move-wide/from16 v1, v255
+       
+       const-wide v4, 5678233453
+       
+       cmp-long v0, v1, v4
+       if-nez v0, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.java
new file mode 100644
index 0000000..8dfcd57
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_from16.d;
+
+public class T_move_wide_from16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d
new file mode 100644
index 0000000..d2e6700
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_2.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 5000
+       const-wide v100, 5678233453
+       move-wide/from16 v101, v100
+       
+       const-wide v4, 5678233453
+       
+       cmp-long v0, v101, v4
+
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.java
new file mode 100644
index 0000000..b320731
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_from16.d;
+
+public class T_move_wide_from16_2 {
+
+    public static int run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d
new file mode 100644
index 0000000..8f95101
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_3.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       move-wide/from16 v0, v5000
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d
new file mode 100644
index 0000000..e5f282a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_4.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5
+       const v1, 0    
+       move-wide/from16 v5, v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d
new file mode 100644
index 0000000..21ec075
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_5.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move-wide/from16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d
new file mode 100644
index 0000000..784e31a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_6.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const v4500, 123
+       move-wide/from16 v0, v4500
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d
new file mode 100644
index 0000000..1790fe5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_7.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v1234, 123
+       move-wide/from16 v255, v1235
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d
new file mode 100644
index 0000000..80d80e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_8.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const-wide v0, 0
+       move-wide/from16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/Test_mul_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/Test_mul_double.java
new file mode 100644
index 0000000..9a63412
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/Test_mul_double.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_double.d.T_mul_double_1;
+import dot.junit.opcodes.mul_double.d.T_mul_double_4;
+
+public class Test_mul_double extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+
+    public void testN1() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(8.478000000000002d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(-0d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, -3.14d
+     */
+    public void testN3() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(8.478000000000002d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_double_4 t = new T_mul_double_4();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(-0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(+0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(-0d, t.run(Double.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double.d.T_mul_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double.d.T_mul_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double.d.T_mul_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d
new file mode 100644
index 0000000..8f7a9a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_1.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.java
new file mode 100644
index 0000000..a70f250
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double.d;
+
+public class T_mul_double_1 {
+
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d
new file mode 100644
index 0000000..99dd815
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double v0, v10, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d
new file mode 100644
index 0000000..54a26c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_3.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       mul-double v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d
new file mode 100644
index 0000000..54df7a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_4.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       mul-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.java
new file mode 100644
index 0000000..a707538
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double.d;
+
+public class T_mul_double_4 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d
new file mode 100644
index 0000000..d3d6ec3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_5.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/Test_mul_double_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/Test_mul_double_2addr.java
new file mode 100644
index 0000000..2637e18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/Test_mul_double_2addr.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_1;
+import dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_4;
+
+public class Test_mul_double_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+
+    public void testN1() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(8.478000000000002d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(-0d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, -3.14d
+     */
+    public void testN3() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(8.478000000000002d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_double_2addr_4 t = new T_mul_double_2addr_4();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(-0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(+0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(-0d, t.run(Double.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d
new file mode 100644
index 0000000..373a854
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2addr_1.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.java
new file mode 100644
index 0000000..f5bdb4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double_2addr.d;
+
+public class T_mul_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d
new file mode 100644
index 0000000..05485d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2addr_2.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double/2addr v10, v14
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d
new file mode 100644
index 0000000..d981779
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2addr_3.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       mul-double/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d
new file mode 100644
index 0000000..1654300
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2addr_4.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       mul-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.java
new file mode 100644
index 0000000..8a17e15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double_2addr.d;
+
+public class T_mul_double_2addr_4 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d
new file mode 100644
index 0000000..ef36f48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2addr_5.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/Test_mul_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/Test_mul_float.java
new file mode 100644
index 0000000..6359122
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/Test_mul_float.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_float.d.T_mul_float_1;
+import dot.junit.opcodes.mul_float.d.T_mul_float_6;
+
+public class Test_mul_float extends DxTestCase {
+    
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(8.478001f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(-0f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, -3.14f
+     */
+    public void testN3() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(8.478001f, t.run(-3.14f, -2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_float_6 t = new T_mul_float_6();
+        try {
+            t.run(3.12f, 13);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(-0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(+0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(-0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d
new file mode 100644
index 0000000..8be7048
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_1.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.java
new file mode 100644
index 0000000..4010691
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float.d;
+
+public class T_mul_float_1 {
+
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d
new file mode 100644
index 0000000..2647599
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_2.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d
new file mode 100644
index 0000000..13a31f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_3.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       mul-float v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d
new file mode 100644
index 0000000..a92ef8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_4.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       mul-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d
new file mode 100644
index 0000000..9f99d59
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d
@@ -0,0 +1,18 @@
+.source T_mul_float_5.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d
new file mode 100644
index 0000000..7b3b61a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d
@@ -0,0 +1,18 @@
+.source T_mul_float_6.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       mul-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.java
new file mode 100644
index 0000000..abccc0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float.d;
+
+public class T_mul_float_6 {
+
+    public float run(float a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/Test_mul_float_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/Test_mul_float_2addr.java
new file mode 100644
index 0000000..0686a9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/Test_mul_float_2addr.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_1;
+import dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_6;
+
+public class Test_mul_float_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(8.478001f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(-0f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, -3.14f
+     */
+    public void testN3() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(8.478001f, t.run(-3.14f, -2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_float_2addr_6 t = new T_mul_float_2addr_6();
+        try {
+            t.run(3.12f, 13);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(-0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(+0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(-0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d
new file mode 100644
index 0000000..05faaba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_mul_float_2addr_1.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.java
new file mode 100644
index 0000000..1f6b647
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float_2addr.d;
+
+public class T_mul_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d
new file mode 100644
index 0000000..11fef7b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_2addr_2.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d
new file mode 100644
index 0000000..9d83fef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_2addr_3.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       mul-float/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d
new file mode 100644
index 0000000..eebb510
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_2addr_4.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       mul-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d
new file mode 100644
index 0000000..03a888b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_mul_float_2addr_5.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d
new file mode 100644
index 0000000..67cccbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_mul_float_2addr_6.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       mul-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.java
new file mode 100644
index 0000000..f580894
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float_2addr.d;
+
+public class T_mul_float_2addr_6 {
+
+    public float run(float a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/Test_mul_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/Test_mul_int.java
new file mode 100644
index 0000000..f9252c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/Test_mul_int.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int.d.T_mul_int_1;
+import dot.junit.opcodes.mul_int.d.T_mul_int_6;
+
+public class Test_mul_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(32, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = -2, 255
+     */
+    public void testN2() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(-510, t.run(-2, 255));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN3() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(-4, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = 4, 0x80000001
+     */
+    public void testN4() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(4, t.run(4, 0x80000001));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_6 t = new T_mul_int_6();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(0, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE,
+                Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(0, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d
new file mode 100644
index 0000000..3b4a63f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_1.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 9
+
+       mul-int v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.java
new file mode 100644
index 0000000..4ac3bea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int.d;
+
+public class T_mul_int_1 {
+
+    public int run(int a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d
new file mode 100644
index 0000000..ed71fa1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d
new file mode 100644
index 0000000..059f7b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_3.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 9
+
+       mul-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d
new file mode 100644
index 0000000..67c0e37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_4.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 9
+
+       mul-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d
new file mode 100644
index 0000000..04be572
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_5.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 9
+
+       mul-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d
new file mode 100644
index 0000000..e181e71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_6.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 9
+
+       mul-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.java
new file mode 100644
index 0000000..a4e6a07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int.d;
+
+public class T_mul_int_6 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/Test_mul_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/Test_mul_int_2addr.java
new file mode 100644
index 0000000..010896c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/Test_mul_int_2addr.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_1;
+import dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_6;
+
+public class Test_mul_int_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(32, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = -2, 255
+     */
+    public void testN2() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(-510, t.run(-2, 255));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN3() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(-4, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = 4, 0x80000001
+     */
+    public void testN4() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(4, t.run(4, 0x80000001));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_2addr_6 t = new T_mul_int_2addr_6();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(0, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE,
+                Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d
new file mode 100644
index 0000000..86a6c9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_1.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.java
new file mode 100644
index 0000000..b4878b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_2addr.d;
+
+public class T_mul_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d
new file mode 100644
index 0000000..744c214
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_2.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int/2addr v7, v8
+       return v7
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d
new file mode 100644
index 0000000..8c14a36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_3.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       mul-int/2addr v5, v6
+       return v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d
new file mode 100644
index 0000000..64e0ba1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_4.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       mul-int/2addr v5, v7
+       return v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d
new file mode 100644
index 0000000..9a22395
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_5.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d
new file mode 100644
index 0000000..c8bbcd2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_6.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 8
+
+       mul-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.java
new file mode 100644
index 0000000..71f6655
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_2addr.d;
+
+public class T_mul_int_2addr_6 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/Test_mul_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/Test_mul_int_lit16.java
new file mode 100644
index 0000000..d77dd0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/Test_mul_int_lit16.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_1;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_2;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_3;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_4;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_5;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_6;
+
+public class Test_mul_int_lit16 extends DxTestCase {
+
+    /**
+     * @title Arguments = 205, 130
+     */
+    public void testN1() {
+        T_mul_int_lit16_1 t = new T_mul_int_lit16_1();
+        assertEquals(26650, t.run(205));
+    }
+
+    /**
+     * @title Arguments = -180, 130
+     */
+    public void testN2() {
+        T_mul_int_lit16_1 t = new T_mul_int_lit16_1();
+        assertEquals(-23400, t.run(-180));
+    }
+
+    /**
+     * @title Arguments = 0xfa, 130
+     */
+    public void testN3() {
+        T_mul_int_lit16_1 t = new T_mul_int_lit16_1();
+        assertEquals(0x7ef4, t.run(0xfa));
+    }
+
+    /**
+     * @title Arguments = -101, -321
+     */
+    public void testN4() {
+        T_mul_int_lit16_2 t = new T_mul_int_lit16_2();
+        assertEquals(32421, t.run(-101));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_lit16_3 t = new T_mul_int_lit16_3();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, 0 
+     */
+    public void testB1() {
+        T_mul_int_lit16_4 t = new T_mul_int_lit16_4();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = 0, Short.MAX_VALUE
+     */
+    public void testB2() {
+        T_mul_int_lit16_4 t = new T_mul_int_lit16_4();
+        assertEquals(0, t.run(Short.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Short.MAX_VALUE
+     */
+    public void testB3() {
+        T_mul_int_lit16_5 t = new T_mul_int_lit16_5();
+        assertEquals(Short.MAX_VALUE, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 1, Short.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_lit16_5 t = new T_mul_int_lit16_5();
+        assertEquals(Short.MIN_VALUE, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 32767, Short.MIN_VALUE
+     */
+    public void testB5() {
+        T_mul_int_lit16_6 t = new T_mul_int_lit16_6();
+        assertEquals(-1073709056, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int * double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference * int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d
new file mode 100644
index 0000000..d7dd6f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_1.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 130
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.java
new file mode 100644
index 0000000..e4b1503
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_1 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d
new file mode 100644
index 0000000..91c550c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_10.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.java
new file mode 100644
index 0000000..54d82de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_10 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d
new file mode 100644
index 0000000..200afbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_2.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, -321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.java
new file mode 100644
index 0000000..33fab36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_2 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d
new file mode 100644
index 0000000..aed3dd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_3.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 130
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.java
new file mode 100644
index 0000000..959ac8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_3 {
+    
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d
new file mode 100644
index 0000000..532ce52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_4.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.java
new file mode 100644
index 0000000..e4abf30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_4 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d
new file mode 100644
index 0000000..0d4d3ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_5.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.java
new file mode 100644
index 0000000..4ca4f63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_5 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d
new file mode 100644
index 0000000..a719ab3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_6.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.java
new file mode 100644
index 0000000..d926570
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_6 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d
new file mode 100644
index 0000000..511de2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_7.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v9, 3276
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.java
new file mode 100644
index 0000000..a891dd9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_7 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d
new file mode 100644
index 0000000..288f649
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_8.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.java
new file mode 100644
index 0000000..d639850
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_8 {
+    
+    public int run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d
new file mode 100644
index 0000000..e8d0737
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_9.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.java
new file mode 100644
index 0000000..b7f8085
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_9 {
+    
+    public int run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/Test_mul_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/Test_mul_int_lit8.java
new file mode 100644
index 0000000..e2dae07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/Test_mul_int_lit8.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_1;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_2;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_3;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_4;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_5;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_6;
+
+public class Test_mul_int_lit8 extends DxTestCase {
+    
+    /**
+     * @title Arguments =  10, 55
+     */
+    public void testN1() {
+        T_mul_int_lit8_1 t = new T_mul_int_lit8_1();
+        assertEquals(550, t.run(55));
+    }
+
+    /**
+     * @title Arguments = 10, -25 
+     */
+    public void testN2() {
+        T_mul_int_lit8_1 t = new T_mul_int_lit8_1();
+        assertEquals(-250, t.run(-25));
+    }
+
+    /**
+     * @title Arguments = -15, -23
+     */
+    public void testN3() {
+        T_mul_int_lit8_2 t = new T_mul_int_lit8_2();
+        assertEquals(345, t.run(-23));
+    }
+    
+    /**
+     * @title Arguments = 0x7ffffffe, 10
+     */
+    public void testN4() {
+        T_mul_int_lit8_1 t = new T_mul_int_lit8_1();
+        assertEquals(-20, t.run(0x7ffffffe));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_lit8_3 t = new T_mul_int_lit8_3();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB1() {
+        T_mul_int_lit8_4 t = new T_mul_int_lit8_4();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = 0, Byte.MAX_VALUE
+     */
+    public void testB2() {
+        T_mul_int_lit8_4 t = new T_mul_int_lit8_4();
+        assertEquals(0, t.run(Byte.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Byte.MAX_VALUE
+     */
+    public void testB3() {
+        T_mul_int_lit8_5 t = new T_mul_int_lit8_5();
+        assertEquals(Byte.MAX_VALUE, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 1, Short.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_lit8_5 t = new T_mul_int_lit8_5();
+        assertEquals(Short.MIN_VALUE, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 127, Short.MIN_VALUE
+     */
+    public void testB5() {
+        T_mul_int_lit8_6 t = new T_mul_int_lit8_6();
+        assertEquals(-4161536, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int * double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - reference * int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d
new file mode 100644
index 0000000..8aebfd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_1.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.java
new file mode 100644
index 0000000..dd87288
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_1 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d
new file mode 100644
index 0000000..716726e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_10.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v7, 111
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.java
new file mode 100644
index 0000000..a50d3d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_10 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d
new file mode 100644
index 0000000..c4d9174
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_2.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, -15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.java
new file mode 100644
index 0000000..97e30cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_2 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d
new file mode 100644
index 0000000..fc70d45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_3.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.java
new file mode 100644
index 0000000..dc7352a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_3 {
+    
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d
new file mode 100644
index 0000000..a9cf5e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_4.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.java
new file mode 100644
index 0000000..4e395c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_4 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d
new file mode 100644
index 0000000..1e08af2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_5.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.java
new file mode 100644
index 0000000..1b7c65f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_5 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d
new file mode 100644
index 0000000..bfcfcc2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_6.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.java
new file mode 100644
index 0000000..6a723c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_6 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d
new file mode 100644
index 0000000..fe88ffb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_7.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v9, 12
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.java
new file mode 100644
index 0000000..34f5fde
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_7 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d
new file mode 100644
index 0000000..fc6ec8a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_8.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 9
+
+       mul-int/lit8 v0, v7, 123
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.java
new file mode 100644
index 0000000..8fb46ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_8 {
+    
+    public int run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d
new file mode 100644
index 0000000..943b9ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_9.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 9
+
+       mul-int/lit8 v0, v7, 123
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.java
new file mode 100644
index 0000000..c7ebd3d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_9 {
+    
+    public int run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/Test_mul_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/Test_mul_long.java
new file mode 100644
index 0000000..1abf57e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/Test_mul_long.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_long.d.T_mul_long_1;
+import dot.junit.opcodes.mul_long.d.T_mul_long_3;
+
+public class Test_mul_long extends DxTestCase {
+    
+    /**
+     * @title Arguments = 222000000000l, 5000000000l
+     */
+    public void testN1() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(3195355577426903040l, t.run(222000000000l, 5000000000l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 123456789l
+     */
+    public void testN2() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-15241578750190521l, t.run(-123456789l, 123456789l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, -123456789l
+     */
+    public void testN3() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(15241578750190521l, t.run(-123456789l, -123456789l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_long_3 t = new T_mul_long_3();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(0, t.run(0, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, Long.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE,
+                Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1
+     */
+    public void testB6() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB7() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float * long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference * long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d
new file mode 100644
index 0000000..de4736d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_1.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.java
new file mode 100644
index 0000000..5cb0074
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long.d;
+
+public class T_mul_long_1 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d
new file mode 100644
index 0000000..4e0d25c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d
new file mode 100644
index 0000000..f2faf7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_3.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       mul-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.java
new file mode 100644
index 0000000..ab7743f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long.d;
+
+public class T_mul_long_3 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d
new file mode 100644
index 0000000..bd62f75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_4.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 14
+
+       mul-long v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d
new file mode 100644
index 0000000..3d1d09e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_5.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       mul-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d
new file mode 100644
index 0000000..656ec8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_6.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long v0, v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/Test_mul_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/Test_mul_long_2addr.java
new file mode 100644
index 0000000..3996c60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/Test_mul_long_2addr.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_1;
+import dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_3;
+
+public class Test_mul_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 222000000000l, 5000000000l
+     */
+    public void testN1() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(3195355577426903040l, t.run(222000000000l, 5000000000l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 123456789l
+     */
+    public void testN2() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-15241578750190521l, t.run(-123456789l, 123456789l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, -123456789l
+     */
+    public void testN3() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(15241578750190521l, t.run(-123456789l, -123456789l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_long_2addr_3 t = new T_mul_long_2addr_3();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(0, t.run(0, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, Long.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE,
+                Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1
+     */
+    public void testB6() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB7() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float * long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference * long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d
new file mode 100644
index 0000000..1175bf4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_1.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.java
new file mode 100644
index 0000000..886761f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long_2addr.d;
+
+public class T_mul_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d
new file mode 100644
index 0000000..c044257
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_2.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d
new file mode 100644
index 0000000..6735fe5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_3.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       mul-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.java
new file mode 100644
index 0000000..122cf54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long_2addr.d;
+
+public class T_mul_long_2addr_3 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d
new file mode 100644
index 0000000..e708710
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_4.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 14
+
+       mul-long/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d
new file mode 100644
index 0000000..365e8ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_5.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       mul-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d
new file mode 100644
index 0000000..bd6d465
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_6.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/Test_neg_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/Test_neg_double.java
new file mode 100644
index 0000000..53fe02b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/Test_neg_double.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_double.d.T_neg_double_1;
+import dot.junit.opcodes.neg_double.d.T_neg_double_4;
+
+public class Test_neg_double extends DxTestCase {
+    
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-1d, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(1d, t.run(-1d));
+    }
+
+    /**
+     * @title Argument = +0
+     */
+    public void testN3() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-0d, t.run(+0d));
+    }
+
+    /**
+     * @title Argument = -2.7
+     */
+    public void testN4() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(2.7d, t.run(-2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of long and double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_neg_double_4 t = new T_neg_double_4();
+        try {
+            t.run(500000l);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Argument = Double.NaN
+     */
+    public void testB1() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(Double.NaN, t.run(Double.NaN));
+    }
+
+    /**
+     * @title Argument = Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-1.7976931348623157E308d, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB5() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-4.9E-324d, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d
new file mode 100644
index 0000000..b094774
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_double_1.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       neg-double v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.java
new file mode 100644
index 0000000..dcf3da6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_double.d;
+
+public class T_neg_double_1 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d
new file mode 100644
index 0000000..a99ecff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_double_2.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       neg-double v0, v8
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d
new file mode 100644
index 0000000..26d6715
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_double_3.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 8
+
+       neg-double v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d
new file mode 100644
index 0000000..d7a51d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_double_4.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       neg-double v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.java
new file mode 100644
index 0000000..d7507ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_double.d;
+
+public class T_neg_double_4 {
+
+    public double run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d
new file mode 100644
index 0000000..b8cbb4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_double_5.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 8
+
+       neg-double v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d
new file mode 100644
index 0000000..33e252a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d
@@ -0,0 +1,18 @@
+.source T_neg_double_6.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       neg-double v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/Test_neg_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/Test_neg_float.java
new file mode 100644
index 0000000..cfd7edf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/Test_neg_float.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_float.d.T_neg_float_1;
+import dot.junit.opcodes.neg_float.d.T_neg_float_6;
+
+public class Test_neg_float extends DxTestCase {
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-1f, t.run(1f));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(1f, t.run(-1f));
+    }
+
+    /**
+     * @title Argument = +0
+     */
+    public void testN3() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-0f, t.run(+0f));
+    }
+
+    /**
+     * @title Argument = -2.7
+     */
+    public void testN4() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(2.7f, t.run(-2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_neg_float_6 t = new T_neg_float_6();
+        try {
+            t.run(5);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Float.NaN
+     */
+    public void testB1() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(Float.NaN, t.run(Float.NaN));
+    }
+
+    /**
+     * @title Argument = Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-3.4028235E38f, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Float.MIN
+     */
+    public void testB5() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-1.4E-45f, t.run(Float.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d
new file mode 100644
index 0000000..3259f41
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_float_1.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       neg-float v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.java
new file mode 100644
index 0000000..9709099
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_float.d;
+
+public class T_neg_float_1 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d
new file mode 100644
index 0000000..966cbe7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_float_2.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       neg-float v0, v5
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d
new file mode 100644
index 0000000..6c6be2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_float_3.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d
new file mode 100644
index 0000000..3b9c963
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_float_4.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d
new file mode 100644
index 0000000..7a391f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d
@@ -0,0 +1,18 @@
+.source T_neg_float_5.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d
new file mode 100644
index 0000000..897725b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_float_6.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       neg-float v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.java
new file mode 100644
index 0000000..f597964
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_float.d;
+
+public class T_neg_float_6 {
+
+    public float run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/Test_neg_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/Test_neg_int.java
new file mode 100644
index 0000000..817e03a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/Test_neg_int.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_int.d.T_neg_int_1;
+import dot.junit.opcodes.neg_int.d.T_neg_int_2;
+import dot.junit.opcodes.neg_int.d.T_neg_int_7;
+
+public class Test_neg_int extends DxTestCase {
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(-1, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(1, t.run(-1));
+    }
+
+    /**
+     * @title Argument = 32768
+     */
+    public void testN3() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(-32768, t.run(32768));
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testN4() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Check that -x == (~x + 1)
+     */
+    public void testN5() {
+        T_neg_int_2 t = new T_neg_int_2();
+        assertTrue(t.run(5));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_neg_int_7 t = new T_neg_int_7();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(0x80000001, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d
new file mode 100644
index 0000000..0ff47de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_int_1.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       neg-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.java
new file mode 100644
index 0000000..fc2a24b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_int.d;
+
+public class T_neg_int_1 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d
new file mode 100644
index 0000000..f66368b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d
@@ -0,0 +1,29 @@
+.source T_neg_int_2.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 7
+
+       neg-int v4, v6
+       
+       not-int v3, v6
+       add-int/lit8 v2, v3, 1
+
+       if-eq v4, v2, Label1
+       const/4 v1, 0
+
+Label15:
+       return v1
+Label1:
+       const/4 v1, 1
+       goto Label15
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.java
new file mode 100644
index 0000000..f37b31d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_int.d;
+
+public class T_neg_int_2 {
+
+     public boolean run(int d) {
+         return -d == (~d + 1);
+     }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d
new file mode 100644
index 0000000..90c16f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_int_3.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       neg-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d
new file mode 100644
index 0000000..4d2c14b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_int_4.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+
+       neg-int v0, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d
new file mode 100644
index 0000000..aa67eff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_int_5.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+
+       neg-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d
new file mode 100644
index 0000000..af24f55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d
@@ -0,0 +1,18 @@
+.source T_neg_int_6.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       neg-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d
new file mode 100644
index 0000000..b1fc23d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_int_7.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       neg-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.java
new file mode 100644
index 0000000..24e130c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_int.d;
+
+public class T_neg_int_7 {
+
+    public int run(float d) {
+        return -(int)d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/Test_neg_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/Test_neg_long.java
new file mode 100644
index 0000000..f731c64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/Test_neg_long.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_long.d.T_neg_long_1;
+import dot.junit.opcodes.neg_long.d.T_neg_long_2;
+import dot.junit.opcodes.neg_long.d.T_neg_long_4;
+
+public class Test_neg_long extends DxTestCase {
+ 
+    /**
+     * @title Argument = 123123123272432432l
+     */
+    public void testN1() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-123123123272432432l, t.run(123123123272432432l));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-1l, t.run(1l));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(1l, t.run(-1l));
+    }
+
+    /**
+     * @title Check that -x == (~x + 1)
+     */
+    public void testN4() {
+        T_neg_long_2 t = new T_neg_long_2();
+        assertTrue(t.run(15l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of long and double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_neg_long_4 t = new T_neg_long_4();
+        try {
+            t.run(1.23d);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB3() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d
new file mode 100644
index 0000000..7973f10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_1.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       neg-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.java
new file mode 100644
index 0000000..dea3c8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_long.d;
+
+public class T_neg_long_1 {
+
+    public long run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d
new file mode 100644
index 0000000..03891af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d
@@ -0,0 +1,33 @@
+.source T_neg_long_2.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)Z
+.limit regs 14
+
+       neg-long v10, v12
+       
+       not-long v8, v12
+       const-wide v6, 1
+       add-long v4, v6, v8
+
+       cmp-long v3, v4, v10
+       const/4 v1, 0
+       if-eq v1, v3, Label1
+       const/4 v0, 0
+
+Label15:
+       return v0
+Label1:
+       const/4 v0, 1
+       goto Label15
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.java
new file mode 100644
index 0000000..dcf67e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_long.d;
+
+public class T_neg_long_2 {
+
+    public boolean run(long d) {
+        return -d == (~d + 1);
+     }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d
new file mode 100644
index 0000000..ab92394
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_3.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       neg-long v0, v8
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d
new file mode 100644
index 0000000..98fe8da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_4.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       neg-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.java
new file mode 100644
index 0000000..20631a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_long.d;
+
+public class T_neg_long_4 {
+
+    public long run(double d) {
+        return -(long)d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d
new file mode 100644
index 0000000..bd3a364
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_5.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 8
+
+       neg-long v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d
new file mode 100644
index 0000000..a936135
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_6.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 8
+
+       neg-long v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d
new file mode 100644
index 0000000..66af380
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_7.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       neg-long v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/TestStubs.java
new file mode 100644
index 0000000..587b4d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array;
+
+// package access to trigger IllegalAccessError in testVFE8
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/Test_new_array.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/Test_new_array.java
new file mode 100644
index 0000000..44aedaa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/Test_new_array.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.new_array.d.T_new_array_1;
+import dot.junit.opcodes.new_array.d.T_new_array_10;
+import dot.junit.opcodes.new_array.d.T_new_array_11;
+import dot.junit.opcodes.new_array.d.T_new_array_2;
+import dot.junit.opcodes.new_array.d.T_new_array_3;
+
+public class Test_new_array extends DxTestCase {
+
+    /**
+     * @title Array of ints
+     */
+    public void testN1() {
+        T_new_array_1 t = new T_new_array_1();
+        int[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertEquals(0, r[i]);
+        }
+
+    }
+
+    /**
+     * @title Array of booleans
+     */
+    public void testN2() {
+        T_new_array_2 t = new T_new_array_2();
+        boolean[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertFalse(r[i]);
+        }
+    }
+
+    /**
+     * @title Array of Objects
+     */
+    public void testN3() {
+        T_new_array_3 t = new T_new_array_3();
+        Object[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertNull(r[i]);
+        }
+    }
+
+    /**
+     * @title Array size = 0
+     */
+    public void testB1() {
+        T_new_array_1 t = new T_new_array_1();
+        int[] r = t.run(0);
+        assertNotNull(r);
+        assertEquals(0, r.length);
+    }
+
+    /**
+     * @title expected NegativeArraySizeException
+     */
+    public void testE1() {
+        T_new_array_2 t = new T_new_array_2();
+        try {
+            t.run(-1);
+            fail("expected NegativeArraySizeException");
+        } catch (NegativeArraySizeException nase) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title  size argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title  size argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A19
+     * @title  constant pool index
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A22
+     * @title  attempt to create object
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A20
+     * @title  array of more than 255 dimensions
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of non-existent class.
+     */
+    public void testVFE7() {
+        try {
+            new T_new_array_11().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of inaccessible class.
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.new_array.TestStubs
+        try {
+            new T_new_array_10().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.d
new file mode 100644
index 0000000..e681faf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_1.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v0, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.java
new file mode 100644
index 0000000..7455164
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array.d;
+
+public class T_new_array_1 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.d
new file mode 100644
index 0000000..4c99085
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_10.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 5
+
+       const v0, 3
+       new-array v0, v0, [Ldot/junit/opcodes/new_array/TestStubs;
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.java
new file mode 100644
index 0000000..81b7a7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array.d;
+
+public class T_new_array_10 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.d
new file mode 100644
index 0000000..3f0b3da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_11.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 5
+
+       const v0, 3
+       new-array v0, v0, [Ljava/lang/ObjectNNN;
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.java
new file mode 100644
index 0000000..e37e1ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array.d;
+
+public class T_new_array_11 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.d
new file mode 100644
index 0000000..de7b8dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_2.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Z
+.limit regs 5
+
+       new-array v0, v4, [Z
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.java
new file mode 100644
index 0000000..27103b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array.d;
+
+public class T_new_array_2 {
+
+    public boolean[] run(int sz) {
+        return new boolean[sz];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.d
new file mode 100644
index 0000000..d560ca6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_3.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.limit regs 5
+
+       new-array v0, v4, [Ljava/lang/Object;
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.java
new file mode 100644
index 0000000..47a28c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array.d;
+
+public class T_new_array_3 {
+
+    public Object[] run(int sz) {
+        return new Object[sz];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.d
new file mode 100644
index 0000000..2f75ff1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_4.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v5, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.d
new file mode 100644
index 0000000..9ce7d3e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_5.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       const-wide v3, 1
+       new-array v0, v3, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.d
new file mode 100644
index 0000000..885beba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_6.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v0, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.dfh
new file mode 100644
index 0000000..0794b49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.dfh
@@ -0,0 +1,270 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_array/d/T_new_array_6.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_array/d/T_new_array_6.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0877446e
+    6E 44 77 08 
+// parsed: offset 12, len 20: signature           : 7016...e092
+    70 16 D1 71 A3 86 82 A2 90 FA CB 70 1E 3F F9 18 2B 71 E0 92 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 302 (0x00012e) "<init>"
+    2E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 310 (0x000136) "I"
+    36 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 313 (0x000139) "LI"
+    39 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    3D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 364 (0x00016c) "Ljava/lang/Object;"
+    6C 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 384 (0x000180) "T_new_array_6.java"
+    80 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 407 (0x000197) "[I"
+    97 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 411 (0x00019b) "run"
+    9B 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LI"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 04 00 00 00 28 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_new_array_6.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 416 (0x0001a0)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A0 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.new_array.d.T_new_array_6.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.new_array.d.T_new_array_6.run"
+    // parsed: offset 272, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: new-array v0, v4, [I // class@0004
+//@mod            23 40 04 00 
+            23 40 04 01 
+        // parsed: offset 292, len 2: |0002: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 302, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 310, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 313, len 4: TYPE_STRING_DATA_ITEM [2] "LI"
+    02 4C 49 00 
+// parsed: offset 317, len 47: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6E 65 77 5F 61 72 72 61 79 2F 64 2F 54 5F 6E 65 77 5F 61 72 72 61 79 5F 36 3B 00 
+// parsed: offset 364, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 384, len 20: TYPE_STRING_DATA_ITEM [5] "T_new_array_6.java"
+    12 54 5F 6E 65 77 5F 61 72 72 61 79 5F 36 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 407, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 411, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    // parsed: offset 416, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 417, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 418, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 419, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 421, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 424, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 426, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 427, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 428, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 430, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 302 (0x00012e)
+        02 20 00 00 09 00 00 00 2E 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 416 (0x0001a0)
+        00 20 00 00 01 00 00 00 A0 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.d
new file mode 100644
index 0000000..f6f2588
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_7.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.limit regs 5
+
+       new-array v0, v4, java/lang/Object
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.d
new file mode 100644
index 0000000..a221fc2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_8.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.limit regs 5
+
+       new-array v0, v4, [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[Ljava/lang/Object;
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.d
new file mode 100644
index 0000000..914322a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_9.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v0, v3, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TTestClass.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TTestClass.java
new file mode 100644
index 0000000..679e665
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TTestClass.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance;
+
+public class TTestClass {
+
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // used by testE3
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TestStubs.java
new file mode 100644
index 0000000..ca22946
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance;
+
+// package access to trigger IllegalAccessError in testVFE5
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/Test_new_instance.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/Test_new_instance.java
new file mode 100644
index 0000000..d994f65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/Test_new_instance.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.new_instance.d.T_new_instance_1;
+import dot.junit.opcodes.new_instance.d.T_new_instance_3;
+import dot.junit.opcodes.new_instance.d.T_new_instance_4;
+import dot.junit.opcodes.new_instance.d.T_new_instance_5;
+import dot.junit.opcodes.new_instance.d.T_new_instance_8;
+import dot.junit.opcodes.new_instance.d.T_new_instance_9;
+
+
+public class Test_new_instance extends DxTestCase {
+
+    /**
+     * @title new String
+     */
+    public void testN1() {
+        T_new_instance_1 t = new T_new_instance_1();
+        String s = t.run();
+        assertNotNull(s);
+        assertEquals(0, s.compareTo("abc"));
+    }
+
+    /**
+     * @title class initialization throws exception
+     */
+    public void testE1() {
+        try {
+            T_new_instance_3.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A21
+     * @title  attempt to instantiate interface
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.new_instance.d.TestAbstractClass
+        //@uses dot.junit.opcodes.new_instance.d.T_new_instance_8
+        T_new_instance_8 t = new T_new_instance_8();
+        try {
+            t.run();
+            fail("expected InstantiationError");
+        } catch (InstantiationError ie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A21
+     * @title  attempt to instantiate abstract
+     * class
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.new_instance.d.TestAbstractClass
+        //@uses dot.junit.opcodes.new_instance.d.T_new_instance_9
+        T_new_instance_9 t = new T_new_instance_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A18
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A21
+     * @title  attempt to create array using new
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title Attempt to access uninitialized class (before <init> is
+     * called
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of inaccessible class.
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.new_instance.TestStubs
+        //@uses dot.junit.opcodes.new_instance.d.T_new_instance_4
+        try {
+            new T_new_instance_4().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of non-existent class.
+     */
+    public void testVFE6() {
+        try {
+            new T_new_instance_5().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint B7
+     * @title A register which holds the result of a new-instance instruction must not be used
+     * if the same new-instance  instruction is again executed before the instance is initialized
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B7
+     * @title A register which holds the result of a new-instance instruction must not be used
+     * if the same new-instance  instruction is again executed before the instance is initialized
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d
new file mode 100644
index 0000000..0cff87a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_1.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 6
+
+       new-instance v1, java/lang/String
+       const-string v3, "abc"
+       invoke-direct {v1, v3}, java/lang/String/<init>(Ljava/lang/String;)V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.java
new file mode 100644
index 0000000..c8f4878
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_1 {
+
+    public String run() {
+        return new String("abc");
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d
new file mode 100644
index 0000000..cd9096d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_10.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       new-instance v6, java/lang/String
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
new file mode 100644
index 0000000..75fb804
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_11.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v4, 5
+       move-object v1, v5
+Label0:
+       move-object v0, v1
+       new-instance v1, java/lang/Integer
+       
+       add-int/lit8 v4, v4, -1
+       if-nez v4, Label0
+
+       invoke-direct {v1, v4}, java/lang/Integer/<init>(I)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d
new file mode 100644
index 0000000..e4b025e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_12.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+    const v0, 0
+Label1:
+    new-instance v1,        java/lang/Integer
+    if-nez v0, INIT
+    move-object v2, v1
+    const v0, 1
+    goto Label1
+INIT:
+        
+    invoke-direct {v1, v0}, java/lang/Integer/<init>(I)V
+    invoke-virtual {v2}, java/lang/Integer/toString()Ljava/lang/String;
+
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d
new file mode 100644
index 0000000..2a8eefb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_2.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_2
+.super java/lang/Object
+
+.field  i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 5
+
+    new-instance v0, dot/junit/opcodes/new_instance/d/T_new_instance_2
+;    invoke-direct {v0}, dot/junit/opcodes/new_instance/d/T_new_instance_2/<init>()V
+
+    iget v1, v0, dot.junit.opcodes.new_instance.d.T_new_instance_2.i I
+
+    return v1
+
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d
new file mode 100644
index 0000000..f6cd6fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_3.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_3
+.super java/lang/Object
+
+.field static i I
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/16 v0, 123
+       const/4 v1, 0
+       div-int/lit8 v0, v0, 0
+       sput v0, dot.junit.opcodes.new_instance.d.T_new_instance_3.i I
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+Label5:
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 4
+
+       new-instance v1, dot/junit/opcodes/new_instance/d/T_new_instance_3
+       invoke-direct {v1}, dot/junit/opcodes/new_instance/d/T_new_instance_3/<init>()V
+
+       sget v1, dot.junit.opcodes.new_instance.d.T_new_instance_3.i I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java
new file mode 100644
index 0000000..dd8bb15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_3 {
+
+    static int i = 123 / 0;
+
+    public static int run() {
+        T_new_instance_3 t = new T_new_instance_3();
+        return t.i;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d
new file mode 100644
index 0000000..a92c597
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_4.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/TestStubs
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/TestStubs/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.java
new file mode 100644
index 0000000..9ed269f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_4 {
+
+     public Object run() {
+            return null;
+        }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d
new file mode 100644
index 0000000..4651f6a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_5.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/Test_new_instanceNNNNN
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/TTestClass/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.java
new file mode 100644
index 0000000..7c6b0c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_5 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d
new file mode 100644
index 0000000..0565aea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_6.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 6
+
+       new-instance v1, java/lang/String
+       const-string v3, "abc"
+       invoke-direct {v1, v3}, java/lang/String/<init>(Ljava/lang/String;)V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.dfh
new file mode 100644
index 0000000..91ac7e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.dfh
@@ -0,0 +1,279 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_instance/d/T_new_instance_6.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_instance/d/T_new_instance_6.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a36952db
+    DB 52 69 A3 
+// parsed: offset 12, len 20: signature           : 71b1...5136
+    71 B1 EB E5 E0 7E D8 D6 08 9A F1 CD 12 14 9C 8E 6E 4F 51 36 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 330 (0x00014a) "<init>"
+    4A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 338 (0x000152) "L"
+    52 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 341 (0x000155) "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    55 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 394 (0x00018a) "Ljava/lang/Object;"
+    8A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 414 (0x00019e) "Ljava/lang/String;"
+    9E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 434 (0x0001b2) "T_new_instance_6.java"
+    B2 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 457 (0x0001c9) "V"
+    C9 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 460 (0x0001cc) "VL"
+    CC 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 464 (0x0001d0) "abc"
+    D0 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 469 (0x0001d5) "run"
+    D5 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "VL"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 324 (0x000144)
+    07 00 00 00 03 00 00 00 44 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 9 (0x000009) "run"
+    00 00 00 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    02 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_new_instance_6.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 474 (0x0001da)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 DA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.new_instance.d.T_new_instance_6.<init>"
+    // parsed: offset 268, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.new_instance.d.T_new_instance_6.run"
+    // parsed: offset 292, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 294, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 308, len 4: |0000: new-instance v1, Ljava/lang/String; // class@0002
+//@mod            22 01 02 00 
+            22 01 02 01 
+        // parsed: offset 312, len 4: |0002: const-string v3, "abc" // string@0008
+            1A 03 08 00 
+        // parsed: offset 316, len 6: |0004: invoke-direct {v1, v3}, Ljava/lang/String;.<init>:(Ljava/lang/String;)V // method@0003
+            70 20 03 00 31 00 
+        // parsed: offset 322, len 2: |0007: return-object v1
+            11 01 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 324, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 328, len 2: type_item [0] type_idx: 2
+        02 00 
+// parsed: offset 330, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 338, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 341, len 53: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6E 65 77 5F 69 6E 73 74 61 6E 63 65 2F 64 2F 54 5F 6E 65 77 5F 69 6E 73 74 61 6E 63 65 5F 36 3B 00 
+// parsed: offset 394, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 414, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 434, len 23: TYPE_STRING_DATA_ITEM [5] "T_new_instance_6.java"
+    15 54 5F 6E 65 77 5F 69 6E 73 74 61 6E 63 65 5F 36 2E 6A 61 76 61 00 
+// parsed: offset 457, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 460, len 4: TYPE_STRING_DATA_ITEM [7] "VL"
+    02 56 4C 00 
+// parsed: offset 464, len 5: TYPE_STRING_DATA_ITEM [8] "abc"
+    03 61 62 63 00 
+// parsed: offset 469, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    // parsed: offset 474, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 475, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 476, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 477, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 479, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 482, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 484, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 485, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 486, len 2: code_off: 292 (0x000124)
+                A4 02 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 324 (0x000144)
+        01 10 00 00 01 00 00 00 44 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 330 (0x00014a)
+        02 20 00 00 0A 00 00 00 4A 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 474 (0x0001da)
+        00 20 00 00 01 00 00 00 DA 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d
new file mode 100644
index 0000000..f2e7fcf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_7.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       new-instance v1, [Ljava/lang/Object;
+; intentionally return v2 ("this")           
+       return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.java
new file mode 100644
index 0000000..f93c886
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_7 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d
new file mode 100644
index 0000000..f474fe9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_8.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/d/TestInterface
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/d/TestInterface/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.java
new file mode 100644
index 0000000..1ca9c38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_8 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d
new file mode 100644
index 0000000..7af9f46
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_9.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+Label5:
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/d/TestAbstractClass
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/d/TestAbstractClass/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.java
new file mode 100644
index 0000000..9f1d2bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_9 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d
new file mode 100644
index 0000000..ea321c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d
@@ -0,0 +1,22 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestAbstractClass.java
+.interface public dot.junit.opcodes.new_instance.d.TestInterface
+
+
+.source TestAbstractClass.java
+.class abstract public dot.junit.opcodes.new_instance.d.TestAbstractClass
+.super java/lang/Object
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestStubs.java
new file mode 100644
index 0000000..cb28c6a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestStubs.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+
+interface TestInterface {
+    public abstract void test();
+}
+
+abstract class TestAbstractClass{
+    
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/nop/Test_nop.java b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/Test_nop.java
new file mode 100644
index 0000000..9044e8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/Test_nop.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.nop;
+
+import dot.junit.DxTestCase;
+import dot.junit.opcodes.nop.d.T_nop_1;
+
+public class Test_nop extends DxTestCase {
+    /**
+     * @title tests nop
+     */
+    public void testN1() {
+        T_nop_1 t = new T_nop_1();
+        // how do we test nop - e.g. initialize some registers and
+        // test if nothing has changed
+        assertTrue(t.run());
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.d
new file mode 100644
index 0000000..59a85e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_nop_1.java
+.class public dot.junit.opcodes.nop.d.T_nop_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       move-object v1, v2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 4
+       const v1, 12345678
+       nop
+       nop
+       nop
+       nop
+       nop
+       move v3, v1
+       nop
+       nop
+       nop
+       if-ne v1, v3, Label1
+       const/4 v1, 1
+       return v1
+Label1:
+       const/4 v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.java
new file mode 100644
index 0000000..ec16b22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.nop.d;
+
+public class T_nop_1 {
+
+    public boolean run() {
+      return true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/Test_not_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/Test_not_int.java
new file mode 100644
index 0000000..0960e32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/Test_not_int.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.not_int.d.T_not_int_1;
+import dot.junit.opcodes.not_int.d.T_not_int_2;
+
+public class Test_not_int extends DxTestCase {
+    
+    /**
+     * @title Argument = 5; 256
+     */
+    public void testN1() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-6, t.run(5));
+        assertEquals(-257, t.run(256));
+    }
+    
+    /**
+     * @title Argument = -5, -256
+     */
+    public void testN2() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(4, t.run(-5));
+        assertEquals(255, t.run(-256));
+    }
+    
+    /**
+     * @title Argument = 0xcafe; 0x12c
+     */
+    public void testN3() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-0xcaff, t.run(0xcafe));
+        assertEquals(-0x12d, t.run(0x12c));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_not_int_2 t = new T_not_int_2();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 1
+     */
+    public void testB3() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-2, t.run(1));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB4() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-1, t.run(0));
+    }
+    
+    /**
+     * @title Argument = -1
+     */
+    public void testB5() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(0, t.run(-1));
+    }
+    
+    /**
+     * @title Argument = Short.MAX_VALUE
+     */
+    public void testB6() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Short.MIN_VALUE, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title Argument = Short.MIN_VALUE
+     */
+    public void testB7() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Short.MAX_VALUE, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.d
new file mode 100644
index 0000000..2b04225
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_1.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       not-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.java
new file mode 100644
index 0000000..b8ac929
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_int.d;
+
+public class T_not_int_1 {
+    
+    public int run(int d) {
+        return ~d;
+    }    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.d
new file mode 100644
index 0000000..3e1ff4a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_2.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       not-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.java
new file mode 100644
index 0000000..679acb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_int.d;
+
+public class T_not_int_2 {
+    
+    public int run(float d) {
+        return ~(int)d;
+    }    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.d
new file mode 100644
index 0000000..a42823e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_3.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       not-int v0, v5
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.d
new file mode 100644
index 0000000..1182ead
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_4.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.d
new file mode 100644
index 0000000..a144392
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_5.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.d
new file mode 100644
index 0000000..c22438f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_6.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/Test_not_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/Test_not_long.java
new file mode 100644
index 0000000..a40cdd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/Test_not_long.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.not_long.d.T_not_long_1;
+import dot.junit.opcodes.not_long.d.T_not_long_2;
+
+public class Test_not_long extends DxTestCase {
+    
+    /**
+     * @title Argument = 500000l
+     */
+    public void testN1() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-500001l, t.run(500000l));
+    }
+    
+    /**
+     * @title Argument = -500000l
+     */
+    public void testN2() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(499999l, t.run(-500000l));
+    }
+    
+    /**
+     * @title Argument = 0xcafe; 0x12c
+     */
+    public void testN3() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-0xcaff, t.run(0xcafe));
+        assertEquals(-0x12d, t.run(0x12c));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_not_long_2 t = new T_not_long_2();
+        try {
+            t.run(1.79d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(Long.MIN_VALUE, t.run(Long.MAX_VALUE));
+    }
+    
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Long.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 1l
+     */
+    public void testB3() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-2l, t.run(1l));
+    }
+    
+    /**
+     * @title Argument = 0l
+     */
+    public void testB4() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-1l, t.run(0l));
+    }
+    
+    /** 
+     * @title Argument = -1l
+     */
+    public void testB5() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(0l, t.run(-1l));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.d
new file mode 100644
index 0000000..9d27053
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_1.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       not-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.java
new file mode 100644
index 0000000..535d69d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_long.d;
+
+public class T_not_long_1 {
+    
+    public long run(long d) {
+        return ~d;
+    } 
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.d
new file mode 100644
index 0000000..cd253a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_2.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 5
+
+       not-long v0, v3
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.java
new file mode 100644
index 0000000..9f93955
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_long.d;
+
+public class T_not_long_2 {
+    
+    public long run(double d) {
+        return ~(long)d;
+    } 
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.d
new file mode 100644
index 0000000..b9eda02
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_3.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 5
+
+       not-long v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.d
new file mode 100644
index 0000000..3ecd0f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_4.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 5
+
+       not-long v0, v4
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.d
new file mode 100644
index 0000000..31c1dfc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_5.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 5
+
+       not-long v0, v4
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.d
new file mode 100644
index 0000000..4d511df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_6.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 5
+
+       not-long v0, v2
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/Test_opc_const.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/Test_opc_const.java
new file mode 100644
index 0000000..aa19e6c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/Test_opc_const.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_const;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_const.d.T_opc_const_1;
+import dot.junit.opcodes.opc_const.d.T_opc_const_2;
+
+public class Test_opc_const extends DxTestCase {
+    /**
+     * @title const v1, 1.54
+     */
+    public void testN1() {
+        T_opc_const_1 t = new T_opc_const_1();
+        float a = 1.5f;
+        float b = 0.04f;
+        assertEquals(a + b, t.run(), 0f);
+        assertEquals(1.54f, t.run(), 0f);
+    }
+    
+    /**
+     * @title const v254, 20000000 
+     */
+    public void testN2() {
+        T_opc_const_2 t = new T_opc_const_2();
+         int a = 10000000;
+         int b = 10000000;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_const.d.T_opc_const_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_const.d.T_opc_const_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d
new file mode 100644
index 0000000..8246f1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_const_1.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 3
+
+       const v1, 1.54
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.java
new file mode 100644
index 0000000..1bf4f0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_const.d;
+
+public class T_opc_const_1 {
+    
+    public float run(){
+        return 1.54f;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d
new file mode 100644
index 0000000..d651fe9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_const_2.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 255
+
+       const v254, 20000000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.java
new file mode 100644
index 0000000..07cd52a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_const.d;
+
+public class T_opc_const_2 {
+
+    public int run() {
+        return 20000000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d
new file mode 100644
index 0000000..d0065db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_const_3.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d
new file mode 100644
index 0000000..f2d5697
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_const_4.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const v1, 1234
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/Test_opc_goto.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/Test_opc_goto.java
new file mode 100644
index 0000000..a3558fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/Test_opc_goto.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_goto;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_goto.d.T_opc_goto_1;
+
+public class Test_opc_goto extends DxTestCase {
+   /**
+    * @title forward and backward goto. This test also tests constraint C17 allowing to have
+     * backward goto as a last opcode in the method.
+    */
+   public void testN1() {
+       T_opc_goto_1 t = new T_opc_goto_1();
+       assertEquals(0, t.run(20));
+   }
+
+   /**
+    * @constraint A6 
+    * @title branch target is inside instruction
+    */
+   public void testVFE1() {
+       try {
+           Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_2");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+   }
+
+   /**
+    * @constraint A6 
+    * @title branch target shall be inside the method
+    */
+   public void testVFE2() {
+       try {
+           Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_3");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+   }
+
+   /**
+    * @constraint n/a 
+    * @title zero offset
+    */
+   public void testVFE3() {
+       try {
+           Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_4");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+   }
+   
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d
new file mode 100644
index 0000000..e9b75ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_1.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+; test positive offset
+      goto Label2
+LabelReturn:      
+      return v4
+      
+Label2:
+       add-int/lit8 v4, v4, -1
+       if-lez v4, LabelExit
+; test negative offset       
+       goto Label2
+       
+LabelExit:       
+       goto LabelReturn
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.java
new file mode 100644
index 0000000..30c4e74
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_goto.d;
+
+public class T_opc_goto_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d
new file mode 100644
index 0000000..8cb3602
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_2.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dfh
new file mode 100644
index 0000000..3917c98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : cf734093
+    93 40 73 CF 
+// parsed: offset 12, len 20: signature           : 19a1...8fae
+    19 A1 80 04 F4 E4 1C 91 9B AB 4F FF A1 01 C6 17 E3 C0 8F AE 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 290 (0x000122) "<init>"
+    22 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 298 (0x00012a) "I"
+    2A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 301 (0x00012d) "II"
+    2D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 305 (0x000131) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    31 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 370 (0x000172) "T_opc_goto_2.java"
+    72 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 284 (0x00011c)
+    02 00 00 00 00 00 00 00 1C 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_opc_goto_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 397 (0x00018d)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8D 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_2.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_2.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 2
+        02 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+//@mod            28 01 
+            28 02 
+        // parsed: offset 282, len 2: |0001: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 284, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 288, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 290, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 298, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 301, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 305, len 45: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    2B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6F 70 63 5F 67 6F 74 6F 2F 64 2F 54 5F 6F 70 63 5F 67 6F 74 6F 5F 32 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 19: TYPE_STRING_DATA_ITEM [5] "T_opc_goto_2.java"
+    11 54 5F 6F 70 63 5F 67 6F 74 6F 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    // parsed: offset 397, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 398, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 400, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 401, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 402, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 405, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 408, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 409, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 411, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 284 (0x00011c)
+        01 10 00 00 01 00 00 00 1C 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 290 (0x000122)
+        02 20 00 00 08 00 00 00 22 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 397 (0x00018d)
+        00 20 00 00 01 00 00 00 8D 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d
new file mode 100644
index 0000000..8edcca6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_3.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dfh
new file mode 100644
index 0000000..9da5505
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4d883f57
+    57 3F 88 4D 
+// parsed: offset 12, len 20: signature           : 16da...c0ad
+    16 DA B2 AB 5C D5 C9 74 71 01 63 17 93 81 6E 18 34 96 C0 AD 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 290 (0x000122) "<init>"
+    22 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 298 (0x00012a) "I"
+    2A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 301 (0x00012d) "II"
+    2D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 305 (0x000131) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    31 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 370 (0x000172) "T_opc_goto_3.java"
+    72 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 284 (0x00011c)
+    02 00 00 00 00 00 00 00 1C 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_opc_goto_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 397 (0x00018d)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8D 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_3.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_3.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 2
+        02 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+//@mod            28 01 
+            28 10 
+        // parsed: offset 282, len 2: |0001: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 284, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 288, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 290, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 298, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 301, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 305, len 45: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    2B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6F 70 63 5F 67 6F 74 6F 2F 64 2F 54 5F 6F 70 63 5F 67 6F 74 6F 5F 33 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 19: TYPE_STRING_DATA_ITEM [5] "T_opc_goto_3.java"
+    11 54 5F 6F 70 63 5F 67 6F 74 6F 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    // parsed: offset 397, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 398, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 400, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 401, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 402, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 405, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 408, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 409, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 411, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 284 (0x00011c)
+        01 10 00 00 01 00 00 00 1C 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 290 (0x000122)
+        02 20 00 00 08 00 00 00 22 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 397 (0x00018d)
+        00 20 00 00 01 00 00 00 8D 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d
new file mode 100644
index 0000000..6c29f65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_4.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto Label1
+Label1:      
+      return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dfh
new file mode 100644
index 0000000..5666601
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 97783f02
+    02 3F 78 97 
+// parsed: offset 12, len 20: signature           : a610...059a
+    A6 10 17 6F A6 2E 7A AE A2 D0 27 EA 5E C8 BF 3E 13 91 05 9A 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 290 (0x000122) "<init>"
+    22 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 298 (0x00012a) "I"
+    2A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 301 (0x00012d) "II"
+    2D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 305 (0x000131) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    31 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 370 (0x000172) "T_opc_goto_4.java"
+    72 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 284 (0x00011c)
+    02 00 00 00 00 00 00 00 1C 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_opc_goto_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 397 (0x00018d)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8D 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 2
+        02 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+//@mod            28 01 
+            28 00 
+        // parsed: offset 282, len 2: |0001: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 284, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 288, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 290, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 298, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 301, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 305, len 45: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    2B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6F 70 63 5F 67 6F 74 6F 2F 64 2F 54 5F 6F 70 63 5F 67 6F 74 6F 5F 34 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 19: TYPE_STRING_DATA_ITEM [5] "T_opc_goto_4.java"
+    11 54 5F 6F 70 63 5F 67 6F 74 6F 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    // parsed: offset 397, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 398, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 400, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 401, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 402, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 405, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 408, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 409, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 411, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 284 (0x00011c)
+        01 10 00 00 01 00 00 00 1C 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 290 (0x000122)
+        02 20 00 00 08 00 00 00 22 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 397 (0x00018d)
+        00 20 00 00 01 00 00 00 8D 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/Test_opc_return.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/Test_opc_return.java
new file mode 100644
index 0000000..2fe8323
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/Test_opc_return.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_return;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_return.d.T_opc_return_1;
+import dot.junit.opcodes.opc_return.d.T_opc_return_3;
+
+public class Test_opc_return extends DxTestCase {
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_opc_return_1 t = new T_opc_return_1();
+        assertEquals(123456, t.run());
+    }
+
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_opc_return_3 t = new T_opc_return_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title return on wide register pair
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d
new file mode 100644
index 0000000..29ae5bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_1.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 10
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+    
+    const v4, 0xdddd
+        
+    invoke-static {}, dot/junit/opcodes/opc_return/d/T_opc_return_1/test()I
+    move-result v6
+    
+    if-ne v4, v6, Label0
+
+    const v4, 1    
+    if-ne v1, v4, Label0
+    
+    const v4, 2    
+    if-ne v2, v4, Label0
+
+    const v4, 3
+    if-ne v3, v4, Label0
+    
+    const v0, 123456
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method private static test()I
+.limit regs 6
+    
+    const v0, 9999
+    const v1, 0xaaa
+    const v2, 0xbbbb
+    const v3, 0xcccc
+    
+    const v4, 0xdddd
+    return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.java
new file mode 100644
index 0000000..2f5029d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_return.d;
+
+public class T_opc_return_1 {
+
+    public int run() {
+        test();
+        return 123456;
+    }
+    
+    private static int test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
new file mode 100644
index 0000000..2410da3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_3.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()F
+.limit regs 4
+
+    monitor-exit v3
+    const v0, 1.0
+    return v0
+.end method
+
+
+
+.method public run()Z
+.limit regs 1
+
+    invoke-direct {v0}, dot/junit/opcodes/opc_return/d/T_opc_return_3/test()F
+
+    const v0, 1
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.java
new file mode 100644
index 0000000..6b93391
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_return.d;
+
+public class T_opc_return_3 {
+    
+    private synchronized long test() {
+        return 1;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d
new file mode 100644
index 0000000..884ce2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_5.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d
new file mode 100644
index 0000000..c19f760
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_6.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 6
+    
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d
new file mode 100644
index 0000000..cec1f9c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_7.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d
new file mode 100644
index 0000000..1ca6832
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_8.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    const-wide v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/Test_opc_throw.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/Test_opc_throw.java
new file mode 100644
index 0000000..5055336
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/Test_opc_throw.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_1;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_12;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_2;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_4;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_5;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_8;
+
+public class Test_opc_throw extends DxTestCase {
+    /**
+     * @title check throw functionality. This test also tests constraint C17 allowing to have
+     * throw as a last opcode in the method.
+     */
+    public void testN1() {
+        T_opc_throw_1 t = new T_opc_throw_1();
+        try {
+            t.run();
+            fail("must throw a RuntimeException");
+        } catch (RuntimeException re) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Throwing of the objectref on the class Throwable
+     */
+    public void testN2() {
+        T_opc_throw_2 t = new T_opc_throw_2();
+        try {
+            t.run();
+            fail("must throw a Throwable");
+        } catch (Throwable e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Throwing of the objectref on the subclass of Throwable
+     */
+    public void testN3() {
+        T_opc_throw_8 t = new T_opc_throw_8();
+        try {
+            t.run();
+            fail("must throw a Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Nearest matching catch must be executed in case of exception
+     */
+    public void testN4() {
+        T_opc_throw_12 t = new T_opc_throw_12();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title NullPointerException If objectref is null, opc_throw throws
+     * a NullPointerException instead of objectref
+     */
+    public void testE1() {
+        T_opc_throw_4 t = new T_opc_throw_4();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected IllegalMonitorStateException
+     */
+    public void testE2() {
+        T_opc_throw_5 t = new T_opc_throw_5();
+        try {
+            t.run();
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  (number of registers)
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B16 
+     * @title operand must be must be assignment-compatible 
+     * with java.lang.Throwable
+
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d
new file mode 100644
index 0000000..90a4a03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_1.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/RuntimeException
+       invoke-direct {v1}, java/lang/RuntimeException/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.java
new file mode 100644
index 0000000..6aa25db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_1 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d
new file mode 100644
index 0000000..c3194bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_10.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+       new-instance v1, java/lang/String
+       invoke-direct {v1}, java/lang/String/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.java
new file mode 100644
index 0000000..b57a68c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_10 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
new file mode 100644
index 0000000..e096f4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_12.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 2
+
+Label0:
+    invoke-direct {v1}, dot/junit/opcodes/opc_throw/d/T_opc_throw_12/test()Z
+    move-result v0
+    return v0
+Label1:
+    const v0, 0
+    return v0
+
+.catch java/lang/RuntimeException from Label0 to Label1 using Label1
+.end method
+
+
+.method private test()Z
+.limit regs 2
+Label0:
+    new-instance v0, java/lang/RuntimeException
+    invoke-direct {v0}, java/lang/RuntimeException/<init>()V
+    throw  v0
+Label1:
+    const v1, 1
+    return v1
+
+.catch java/lang/RuntimeException from Label0 to Label1 using Label1
+.end method
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.java
new file mode 100644
index 0000000..50ef212
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_12 {
+
+    public boolean run() {
+        
+        try{
+            return test();
+        } catch(RuntimeException e2) {
+        }
+        return false;
+    }
+    
+    private boolean test() {
+        try {
+            throw new RuntimeException();
+        } catch(RuntimeException e1) {
+            return true;
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d
new file mode 100644
index 0000000..95c3657
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_2.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+      return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/Throwable
+       invoke-direct {v1}, java/lang/Throwable/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.java
new file mode 100644
index 0000000..df4c62d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_2 {
+
+    public void run() throws Throwable {
+        throw new Throwable();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d
new file mode 100644
index 0000000..7ef732a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_3.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const-wide v1, 314
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d
new file mode 100644
index 0000000..ab5d803
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_4.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/4 v1, 0
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.java
new file mode 100644
index 0000000..89c576d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_4 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
new file mode 100644
index 0000000..4e23269
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_5.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public declared_synchronized run()V
+.limit regs 6
+
+       monitor-exit v5
+
+       new-instance v1, java/lang/NullPointerException
+       invoke-direct {v1}, java/lang/NullPointerException/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.java
new file mode 100644
index 0000000..748e08c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_5 {
+
+    public synchronized void run() {
+            throw new NullPointerException();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d
new file mode 100644
index 0000000..51ca304
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_6.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/RuntimeException
+       invoke-direct {v1}, java/lang/RuntimeException/<init>()V
+       throw v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d
new file mode 100644
index 0000000..bf85401
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_7.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const v1, 3.14
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d
new file mode 100644
index 0000000..8b91411
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_8.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/Error
+       invoke-direct {v1}, java/lang/Error/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.java
new file mode 100644
index 0000000..30dc98a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_8 {
+
+    public void run() throws Error {
+        throw new Error();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_9.java
new file mode 100644
index 0000000..bd173cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_9 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/Test_or_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/Test_or_int.java
new file mode 100644
index 0000000..e2ebcbf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/Test_or_int.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int.d.T_or_int_1;
+import dot.junit.opcodes.or_int.d.T_or_int_6;
+
+public class Test_or_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(15, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(0xfffffff9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(-1, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_6 t = new T_or_int_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.d
new file mode 100644
index 0000000..bac2513
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_1.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.java
new file mode 100644
index 0000000..36da158
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int.d;
+
+public class T_or_int_1 {
+
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.d
new file mode 100644
index 0000000..9afca45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.d
new file mode 100644
index 0000000..cc2a413
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_3.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       or-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.d
new file mode 100644
index 0000000..f47f082
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_4.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.limit regs 8
+
+       or-int v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.d
new file mode 100644
index 0000000..65aee2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_5.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.d
new file mode 100644
index 0000000..5543c18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_6.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       or-int v0, v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.java
new file mode 100644
index 0000000..9450467
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int.d;
+
+public class T_or_int_6 {
+
+    public int run(float a, int b) {
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/Test_or_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/Test_or_int_2addr.java
new file mode 100644
index 0000000..1278e42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/Test_or_int_2addr.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_1;
+import dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_6;
+
+public class Test_or_int_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(15, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(0xfffffff9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(-1, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_2addr_6 t = new T_or_int_2addr_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d
new file mode 100644
index 0000000..c1d6357
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_1.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.java
new file mode 100644
index 0000000..d802576
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_2addr.d;
+
+public class T_or_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d
new file mode 100644
index 0000000..0fe271f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_2.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d
new file mode 100644
index 0000000..f7b8de4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_3.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d
new file mode 100644
index 0000000..c29c45a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_4.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d
new file mode 100644
index 0000000..55c9544
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_5.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d
new file mode 100644
index 0000000..2eb863f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_6.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       or-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.java
new file mode 100644
index 0000000..271e8ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_2addr.d;
+
+public class T_or_int_2addr_6 {
+
+    public int run(float a, int b) {
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/Test_or_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/Test_or_int_lit16.java
new file mode 100644
index 0000000..0595a7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/Test_or_int_lit16.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_1;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_2;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_3;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_4;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_5;
+
+public class Test_or_int_lit16 extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_lit16_1 t = new T_or_int_lit16_1();
+        assertEquals(15, t.run(15));
+    }
+
+    /**
+     * @title Arguments = 0x5ff5, 0x7ff7
+     */
+    public void testN2() {
+        T_or_int_lit16_2 t = new T_or_int_lit16_2();
+        assertEquals(0x7ff7, t.run(0x5ff5));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_lit16_3 t = new T_or_int_lit16_3();
+        assertEquals(-1, t.run(0xcaf));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_lit16_4 t = new T_or_int_lit16_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_lit16_3 t = new T_or_int_lit16_3();
+        assertEquals(-1, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_lit16_5 t = new T_or_int_lit16_5();
+        assertEquals(0xffffffff, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d
new file mode 100644
index 0000000..2750eb2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_1.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.java
new file mode 100644
index 0000000..b9c94bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_1 {
+    
+    public int run(int a) {
+        int b = 8;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d
new file mode 100644
index 0000000..bbddaa9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_2.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 0x7ff7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.java
new file mode 100644
index 0000000..b87fd5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_2 {
+    
+    public int run(int a) {
+        int b = 0x7ff7;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d
new file mode 100644
index 0000000..ee50f62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_3.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.java
new file mode 100644
index 0000000..bddbf13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d
new file mode 100644
index 0000000..2bc0910
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_4.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.java
new file mode 100644
index 0000000..fe01a61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_4 {
+    
+    public int run(float a) {
+        int b = 15;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d
new file mode 100644
index 0000000..a227848
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_5.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.java
new file mode 100644
index 0000000..f94b3aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_5 {
+    
+    public int run(int b) {
+        int a = Short.MAX_VALUE;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d
new file mode 100644
index 0000000..539491a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_6.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v8, 8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.java
new file mode 100644
index 0000000..78c7732
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_6 {
+    
+    public int run(int a) {
+        int b = 8;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d
new file mode 100644
index 0000000..1e28c75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_7.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.java
new file mode 100644
index 0000000..784592a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_7 {
+    
+    public int run(double a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d
new file mode 100644
index 0000000..42150a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_8.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.java
new file mode 100644
index 0000000..0f65388
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_8 {
+    
+    public int run(long a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d
new file mode 100644
index 0000000..a810f2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_9.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.java
new file mode 100644
index 0000000..96c28ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_9 {
+    
+    public int run(int a) {
+        int b = 10;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/Test_or_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/Test_or_int_lit8.java
new file mode 100644
index 0000000..a9b697c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/Test_or_int_lit8.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_1;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_2;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_3;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_4;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_5;
+
+public class Test_or_int_lit8 extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_lit8_1 t = new T_or_int_lit8_1();
+        assertEquals(15, t.run(15));
+    }
+
+    /**
+     * @title Arguments = 0x5f, 0x7f
+     */
+    public void testN2() {
+        T_or_int_lit8_2 t = new T_or_int_lit8_2();
+        assertEquals(0x7f, t.run(0x5f));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_lit8_3 t = new T_or_int_lit8_3();
+        assertEquals(-1, t.run(0xcaf));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_lit8_4 t = new T_or_int_lit8_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_lit8_3 t = new T_or_int_lit8_3();
+        assertEquals(-1, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_lit8_5 t = new T_or_int_lit8_5();
+        assertEquals(0xffffffff, t.run(Byte.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d
new file mode 100644
index 0000000..71967f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_1.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.java
new file mode 100644
index 0000000..eaedd28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 8;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d
new file mode 100644
index 0000000..44143ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_2.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 0x7f
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.java
new file mode 100644
index 0000000..3a93f0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 0x7f;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d
new file mode 100644
index 0000000..9039138
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_3.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.java
new file mode 100644
index 0000000..0c93d21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d
new file mode 100644
index 0000000..6e07519
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_4.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.java
new file mode 100644
index 0000000..83c991b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_4 {
+    
+    public int run(float a) {
+        int b = 15;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d
new file mode 100644
index 0000000..c765b57
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_5.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.java
new file mode 100644
index 0000000..8cc8560
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = Byte.MAX_VALUE;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d
new file mode 100644
index 0000000..3a70209
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_6.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.java
new file mode 100644
index 0000000..5f9478b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_6 {
+    
+    public int run(int a) {
+        int b = 10;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d
new file mode 100644
index 0000000..8040a0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_7.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.java
new file mode 100644
index 0000000..578692d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_7 {
+    
+    public int run(double a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d
new file mode 100644
index 0000000..e0b4801
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_8.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.java
new file mode 100644
index 0000000..a00cb27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_8 {
+    
+    public int run(long a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d
new file mode 100644
index 0000000..7e44fec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_9.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.java
new file mode 100644
index 0000000..1a67d00
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_9 {
+    
+    public int run(int a) {
+        int b = 10;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/Test_or_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/Test_or_long.java
new file mode 100644
index 0000000..87c351e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/Test_or_long.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_long.d.T_or_long_1;
+import dot.junit.opcodes.or_long.d.T_or_long_3;
+
+public class Test_or_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 123456789121l, 2l
+     */
+    public void testN1() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(123456789123l, t.run(123456789121l, 2l));
+    }
+
+    /**
+     * @title Arguments = 0xffffffffffffff8l, 0xffffffffffffff1l
+     */
+    public void testN2() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(0xffffffffffffff9l, t.run(0xffffffffffffff8l,
+                0xffffffffffffff1l));
+    }
+
+    /**
+     * @title Arguments = 0xabcdefabcdef & -1
+     */
+    public void testN3() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(-1l, t.run(0xabcdefabcdefl, -1l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_long_3 t = new T_or_long_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.d
new file mode 100644
index 0000000..6bc5ef8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_1.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.java
new file mode 100644
index 0000000..0e565cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long.d;
+
+public class T_or_long_1 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.d
new file mode 100644
index 0000000..b33694e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long v0, v10, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.d
new file mode 100644
index 0000000..f85ee63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_3.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       or-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.java
new file mode 100644
index 0000000..2a86c48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long.d;
+
+public class T_or_long_3 {
+
+    public long run(long a, double b) {
+        return a | (long)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.d
new file mode 100644
index 0000000..89337b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_4.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       or-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.d
new file mode 100644
index 0000000..91fbc4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_5.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       or-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.d
new file mode 100644
index 0000000..ee5c07a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_6.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/Test_or_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/Test_or_long_2addr.java
new file mode 100644
index 0000000..16e34b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/Test_or_long_2addr.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_1;
+import dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_3;
+
+public class Test_or_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 123456789121l, 2l
+     */
+    public void testN1() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(123456789123l, t.run(123456789121l, 2l));
+    }
+
+    /**
+     * @title Arguments = 0xffffffffffffff8l, 0xffffffffffffff1l
+     */
+    public void testN2() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(0xffffffffffffff9l, t.run(0xffffffffffffff8l,
+                0xffffffffffffff1l));
+    }
+
+    /**
+     * @title Arguments = 0xabcdefabcdef & -1
+     */
+    public void testN3() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(-1l, t.run(0xabcdefabcdefl, -1l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_long_2addr_3 t = new T_or_long_2addr_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d
new file mode 100644
index 0000000..a7c4859
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_1.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.java
new file mode 100644
index 0000000..c82fc8a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long_2addr.d;
+
+public class T_or_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d
new file mode 100644
index 0000000..f7db657
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_2.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long/2addr v10, v14
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d
new file mode 100644
index 0000000..5604162
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_3.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       or-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.java
new file mode 100644
index 0000000..98c77b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long_2addr.d;
+
+public class T_or_long_2addr_3 {
+
+    public long run(long a, double b) {
+        return a | (long)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d
new file mode 100644
index 0000000..a13b59f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_4.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       or-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d
new file mode 100644
index 0000000..7d7667d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_5.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       or-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d
new file mode 100644
index 0000000..65d1c7b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_6.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/Test_packed_switch.java b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/Test_packed_switch.java
new file mode 100644
index 0000000..780a490
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/Test_packed_switch.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.packed_switch;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.packed_switch.d.T_packed_switch_1;
+import dot.junit.opcodes.packed_switch.d.T_packed_switch_2;
+
+public class Test_packed_switch extends DxTestCase {
+
+    /**
+     * @title try different values
+     */
+    public void testN1() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(2, t.run(-1));
+
+        assertEquals(-1, t.run(4));
+        assertEquals(20, t.run(2));
+        assertEquals(-1, t.run(5));
+
+        assertEquals(-1, t.run(6));
+        assertEquals(20, t.run(3));
+        assertEquals(-1, t.run(7));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN2() {
+        try {
+            T_packed_switch_2 t = new T_packed_switch_2();
+            t.run(-1.23f);
+        } catch(Throwable t) {
+            
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(-1, t.run(0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A7 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A7
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint A7 
+     * @title offset to table shall be inside method
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A7
+     * @title the size and the list of targets must be consistent. 
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B22
+     * @title packed-switch-data pseudo-instructions must not be reachable by control flow 
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A7
+     * @title table has wrong ident code
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d
new file mode 100644
index 0000000..bd692e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_1.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.java
new file mode 100644
index 0000000..4c56e14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_1 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d
new file mode 100644
index 0000000..d1d2d03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_11.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dfh
new file mode 100644
index 0000000..451465e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7b3e5055
+    55 50 3E 7B 
+// parsed: offset 12, len 20: signature           : 13de...bd04
+    13 DE 7D 13 9F C2 C8 77 AF 7A EA 9B 47 76 9C 01 E5 F3 BD 04 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 405 (0x000195) "Ljava/lang/Object;"
+    95 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 425 (0x0001a9) "T_packed_switch_11.java"
+    A9 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 450 (0x0001c2) "V"
+    C2 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 453 (0x0001c5) "run"
+    C5 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 458 (0x0001ca)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 CA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_11.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 0000000a //  +0x0000000a
+            2B 04 0A 00 00 00 
+        // parsed: offset 286, len 2: |0003: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 288, len 2: |0004: return v2
+            0F 02 
+        // parsed: offset 290, len 2: |0005: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 4: |0007: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 298, len 2: |0009: return v2
+            0F 02 
+        // parsed: offset 300, len 28: |000a: packed-switch-data (14 units)
+//@mod            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+            00 01 06 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 31 3B 00 
+// parsed: offset 405, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 425, len 25: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_11.java"
+    17 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 450, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 453, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    // parsed: offset 458, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 459, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 460, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 461, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 462, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 463, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 466, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 468, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 469, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 470, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 458 (0x0001ca)
+        00 20 00 00 01 00 00 00 CA 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.java
new file mode 100644
index 0000000..3565f3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_11 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        }
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d
new file mode 100644
index 0000000..58afb0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_12.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       goto Label0
+
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+Label0:       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d
new file mode 100644
index 0000000..2e7471b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_13.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       goto Label0
+Label0:       
+       packed-switch v4, 0
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dfh
new file mode 100644
index 0000000..4bfcca7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 87464e10
+    10 4E 46 87 
+// parsed: offset 12, len 20: signature           : 7bca...1bb2
+    7B CA CF 83 19 C2 CE 39 ED B4 6A 93 F6 BF AF D5 3E F6 1B B2 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 405 (0x000195) "Ljava/lang/Object;"
+    95 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 425 (0x0001a9) "T_packed_switch_13.java"
+    A9 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 450 (0x0001c2) "V"
+    C2 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 453 (0x0001c5) "run"
+    C5 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_13.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 458 (0x0001ca)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 CA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_13.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_13.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+            28 01 
+        // parsed: offset 282, len 6: |0001: packed-switch v4, 0000000c //  +0x0000000b
+            2B 04 0B 00 00 00 
+        // parsed: offset 288, len 2: |0004: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 290, len 2: |0005: return v2
+            0F 02 
+        // parsed: offset 292, len 2: |0006: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 294, len 2: |0007: return v2
+            0F 02 
+        // parsed: offset 296, len 4: |0008: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 300, len 2: |000a: return v2
+            0F 02 
+        // parsed: offset 302, len 2: |000b: nop // spacer
+            00 00 
+        // parsed: offset 304, len 24: |000c: packed-switch-data (12 units)
+//@mod            00 01 04 00 00 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+            00 06 04 00 00 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 33 3B 00 
+// parsed: offset 405, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 425, len 25: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_13.java"
+    17 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 33 2E 6A 61 76 61 00 
+// parsed: offset 450, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 453, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    // parsed: offset 458, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 459, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 460, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 461, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 462, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 463, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 466, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 468, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 469, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 470, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 458 (0x0001ca)
+        00 20 00 00 01 00 00 00 CA 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d
new file mode 100644
index 0000000..a356eb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_2.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.java
new file mode 100644
index 0000000..977aea7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_2 {
+
+    public int run(float i) {
+        switch ((int)i) {
+        case -1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d
new file mode 100644
index 0000000..79e9e8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_3.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v5, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d
new file mode 100644
index 0000000..1c3d42b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_4.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+       packed-switch v3, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d
new file mode 100644
index 0000000..c648fbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_5.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+       packed-switch v3, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d
new file mode 100644
index 0000000..9a18602
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_6.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v3, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d
new file mode 100644
index 0000000..ebf9766
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_7.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dfh
new file mode 100644
index 0000000..d30068e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : efe7503a
+    3A 50 E7 EF 
+// parsed: offset 12, len 20: signature           : eeec...6db9
+    EE EC 3C 7A 99 EE 9C AE 73 67 A0 02 4A 34 19 B6 D1 E8 6D B9 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 404 (0x000194) "Ljava/lang/Object;"
+    94 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 424 (0x0001a8) "T_packed_switch_7.java"
+    A8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 448 (0x0001c0) "V"
+    C0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 451 (0x0001c3) "run"
+    C3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 456 (0x0001c8)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 C8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_7.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_7.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 0000000a //  +0x0000000a
+            2B 04 0A 00 00 00 
+        // parsed: offset 286, len 2: |0003: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 288, len 2: |0004: return v2
+            0F 02 
+        // parsed: offset 290, len 2: |0005: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 4: |0007: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 298, len 2: |0009: return v2
+            0F 02 
+        // parsed: offset 300, len 28: |000a: packed-switch-data (14 units)
+//@mod            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 01 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 37 3B 00 
+// parsed: offset 404, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 424, len 24: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_7.java"
+    16 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 448, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 451, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    // parsed: offset 456, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 457, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 458, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 459, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 460, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 461, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 464, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 466, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 467, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 468, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 470, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 456 (0x0001c8)
+        00 20 00 00 01 00 00 00 C8 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.java
new file mode 100644
index 0000000..53e1806
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_7 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d
new file mode 100644
index 0000000..b22771c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_8.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const v2, -1
+       return v2
+Label9:
+       const v2, 2
+       return v2
+Label12:
+       const v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dfh
new file mode 100644
index 0000000..71189f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7f5c534c
+    4C 53 5C 7F 
+// parsed: offset 12, len 20: signature           : 97ca...2c6d
+    97 CA 8C F6 19 E5 9D 0D D2 A3 C8 ED 06 77 15 0E AE A8 2C 6D 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_packed_switch_8.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_8.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_8.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 00000010 //  +0x00000010
+            2B 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v2, #float nan // #0xffffffff int
+            14 02 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 6: |0007: const v2, #float 0.000000 // #0x00000002 int
+            14 02 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v2
+            0F 02 
+        // parsed: offset 302, len 6: |000b: const v2, #float 0.000000 // #0x00000014 int
+            14 02 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v2
+            0F 02 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: packed-switch-data (14 units)
+//@mod            00 01 05 00 FF FF FF FF 07 00 00 00 03 00 00 00 03 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 01 05 00 FF FF FF FF 07 00 00 00 03 00 00 00 03 00 00 00 0B 00 00 00 0C 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 38 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_8.java"
+    16 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d
new file mode 100644
index 0000000..217a917
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_9.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dfh
new file mode 100644
index 0000000..f499745
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 8b9450f3
+    F3 50 94 8B 
+// parsed: offset 12, len 20: signature           : 70d9...f3d5
+    70 D9 7D E3 97 15 3F D2 B8 B5 72 A3 F9 DE 77 29 3D 5A F3 D5 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 404 (0x000194) "Ljava/lang/Object;"
+    94 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 424 (0x0001a8) "T_packed_switch_9.java"
+    A8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 448 (0x0001c0) "V"
+    C0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 451 (0x0001c3) "run"
+    C3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 456 (0x0001c8)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 C8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_9.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 0000000a //  +0x0000000a
+//@mod            2B 04 0A 00 00 00 
+            2B 04 0A 01 00 00 
+        // parsed: offset 286, len 2: |0003: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 288, len 2: |0004: return v2
+            0F 02 
+        // parsed: offset 290, len 2: |0005: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 4: |0007: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 298, len 2: |0009: return v2
+            0F 02 
+        // parsed: offset 300, len 28: |000a: packed-switch-data (14 units)
+            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 39 3B 00 
+// parsed: offset 404, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 424, len 24: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_9.java"
+    16 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 448, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 451, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    // parsed: offset 456, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 457, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 458, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 459, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 460, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 461, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 464, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 466, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 467, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 468, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 470, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 456 (0x0001c8)
+        00 20 00 00 01 00 00 00 C8 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/Test_rem_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/Test_rem_double.java
new file mode 100644
index 0000000..bd540d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/Test_rem_double.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_double.d.T_rem_double_1;
+import dot.junit.opcodes.rem_double.d.T_rem_double_4;
+
+public class Test_rem_double extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(2.7d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, 2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_double_4 t = new T_rem_double_4();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(-2.7d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(0d, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9d
+     */
+    public void testB9() {
+        T_rem_double_1 t = new T_rem_double_1();
+
+        assertEquals(1.543905285031139E-10d, t.run(Double.MAX_VALUE, -1E-9d));
+    }
+
+    /**
+     * @constraint A24
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d
new file mode 100644
index 0000000..2585be4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_double_1.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.java
new file mode 100644
index 0000000..11f42f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double.d;
+
+public class T_rem_double_1 {
+
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d
new file mode 100644
index 0000000..bacfdfd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_double_2.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d
new file mode 100644
index 0000000..87ce2da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_double_3.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       rem-double v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d
new file mode 100644
index 0000000..b917916
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_double_4.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       rem-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.java
new file mode 100644
index 0000000..52b842d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double.d;
+
+public class T_rem_double_4 {
+
+    public double run(long a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d
new file mode 100644
index 0000000..6a2a11a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d
@@ -0,0 +1,18 @@
+.source T_rem_double_5.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d
new file mode 100644
index 0000000..5cb0397
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_double_6.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)D
+.limit regs 14
+
+       rem-double v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/Test_rem_double_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/Test_rem_double_2addr.java
new file mode 100644
index 0000000..da7b741
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/Test_rem_double_2addr.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_1;
+import dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_4;
+
+public class Test_rem_double_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(2.7d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, 2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_double_2addr_4 t = new T_rem_double_2addr_4();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(-2.7d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(0d, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9d
+     */
+    public void testB9() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+
+        assertEquals(1.543905285031139E-10d, t.run(Double.MAX_VALUE, -1E-9d));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d
new file mode 100644
index 0000000..898b7db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_1.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.java
new file mode 100644
index 0000000..bf60eb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double_2addr.d;
+
+public class T_rem_double_2addr_1 {
+    
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d
new file mode 100644
index 0000000..923864f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_2.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d
new file mode 100644
index 0000000..5913c80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_3.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       rem-double/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d
new file mode 100644
index 0000000..a146daf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_4.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       rem-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.java
new file mode 100644
index 0000000..964d640
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double_2addr.d;
+
+public class T_rem_double_2addr_4 {
+    
+    public double run(long a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d
new file mode 100644
index 0000000..92c22bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_5.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d
new file mode 100644
index 0000000..7ea6104
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_6.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)D
+.limit regs 14
+
+       rem-double/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/Test_rem_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/Test_rem_float.java
new file mode 100644
index 0000000..2955a04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/Test_rem_float.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_float.d.T_rem_float_1;
+import dot.junit.opcodes.rem_float.d.T_rem_float_6;
+
+public class Test_rem_float extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(2.7f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, 2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_float_6 t = new T_rem_float_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(-2.7f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(0f, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(7.2584893E-10f, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d
new file mode 100644
index 0000000..a4edaea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_1.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.java
new file mode 100644
index 0000000..0c5e640
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float.d;
+
+public class T_rem_float_1 {
+
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d
new file mode 100644
index 0000000..8ce3466
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d
new file mode 100644
index 0000000..e773a12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_3.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       rem-float v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d
new file mode 100644
index 0000000..afde65c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_4.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       rem-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d
new file mode 100644
index 0000000..23740bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_5.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d
new file mode 100644
index 0000000..83ac469
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_6.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       rem-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.java
new file mode 100644
index 0000000..d2592a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float.d;
+
+public class T_rem_float_6 {
+
+    public float run(float a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/Test_rem_float_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/Test_rem_float_2addr.java
new file mode 100644
index 0000000..d0d743a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/Test_rem_float_2addr.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_1;
+import dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_6;
+
+public class Test_rem_float_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(2.7f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, 2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_float_2addr_6 t = new T_rem_float_2addr_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(-2.7f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(0f, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(7.2584893E-10f, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d
new file mode 100644
index 0000000..a5571e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_1.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.java
new file mode 100644
index 0000000..521abb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float_2addr.d;
+
+public class T_rem_float_2addr_1 {
+    
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d
new file mode 100644
index 0000000..aef48cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_2.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d
new file mode 100644
index 0000000..294652e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_3.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       rem-float/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d
new file mode 100644
index 0000000..4c5f1f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_4.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       rem-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d
new file mode 100644
index 0000000..44c82c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_5.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d
new file mode 100644
index 0000000..4957893
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_6.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       rem-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.java
new file mode 100644
index 0000000..72d01ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float_2addr.d;
+
+public class T_rem_float_2addr_6 {
+    
+    public float run(float a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/Test_rem_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/Test_rem_int.java
new file mode 100644
index 0000000..e355a30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/Test_rem_int.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int.d.T_rem_int_1;
+import dot.junit.opcodes.rem_int.d.T_rem_int_6;
+
+public class Test_rem_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 1073741823, 4
+     */
+    public void testN2() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(3, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(-1, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(1, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(-697, t.run(-17895697, -3000));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_6 t = new T_rem_int_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(1, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(1, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_1 t = new T_rem_int_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d
new file mode 100644
index 0000000..25a1ec5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_1.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.java
new file mode 100644
index 0000000..a24b8a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int.d;
+
+public class T_rem_int_1 {
+
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d
new file mode 100644
index 0000000..1fa948b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d
new file mode 100644
index 0000000..5db617b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_3.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       rem-int v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d
new file mode 100644
index 0000000..69aeb8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_4.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       rem-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d
new file mode 100644
index 0000000..d3b2b76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_5.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d
new file mode 100644
index 0000000..032b8ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_6.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       rem-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.java
new file mode 100644
index 0000000..074fd8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int.d;
+
+public class T_rem_int_6 {
+
+    public int run(float a, int b) {
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/Test_rem_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/Test_rem_int_2addr.java
new file mode 100644
index 0000000..f45439b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/Test_rem_int_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_1;
+import dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_6;
+
+public class Test_rem_int_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 1073741823, 4
+     */
+    public void testN2() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(3, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(-1, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(1, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(-697, t.run(-17895697, -3000));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_2addr_6 t = new T_rem_int_2addr_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(1, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(1, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d
new file mode 100644
index 0000000..25a7fca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_1.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.java
new file mode 100644
index 0000000..d19c535
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_2addr.d;
+
+public class T_rem_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d
new file mode 100644
index 0000000..0dee98c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_2.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d
new file mode 100644
index 0000000..b76a76a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_3.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       rem-int/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d
new file mode 100644
index 0000000..e3828d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_4.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       rem-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d
new file mode 100644
index 0000000..d684c92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_5.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d
new file mode 100644
index 0000000..0e5825c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_6.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       rem-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.java
new file mode 100644
index 0000000..9508f97
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_2addr.d;
+
+public class T_rem_int_2addr_6 {
+
+    public int run(float a, int b) {
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/Test_rem_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/Test_rem_int_lit16.java
new file mode 100644
index 0000000..3449f86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/Test_rem_int_lit16.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_1;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_2;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_3;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_4;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_5;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_6;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_7;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_8;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_9;
+
+public class Test_rem_int_lit16 extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(0, t.run(8));
+    }
+
+    /**
+     * @title Arguments = 10737, 4
+     */
+    public void testN2() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(1, t.run(10737));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(-2, t.run(-10));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_lit16_2 t = new T_rem_int_lit16_2();
+        assertEquals(1, t.run(22222));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_lit16_3 t = new T_rem_int_lit16_3();
+        assertEquals(-2235, t.run(-23235));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_lit16_4 t = new T_rem_int_lit16_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_lit16_5 t = new T_rem_int_lit16_5();
+        assertEquals(0, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_lit16_6 t = new T_rem_int_lit16_6();
+        assertEquals(0, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_lit16_6 t = new T_rem_int_lit16_6();
+        assertEquals(0, t.run(Short.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, 32767
+     */
+    public void testB4() {
+        T_rem_int_lit16_7 t = new T_rem_int_lit16_7();
+        assertEquals(-1, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, 32767
+     */
+    public void testB5() {
+        T_rem_int_lit16_7 t = new T_rem_int_lit16_7();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Arguments = 1, -32768
+     */
+    public void testB6() {
+        T_rem_int_lit16_8 t = new T_rem_int_lit16_8();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_lit16_9 t = new T_rem_int_lit16_9();
+        try {
+            t.run(1);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d
new file mode 100644
index 0000000..84c49ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_1.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.java
new file mode 100644
index 0000000..75963ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_1 {
+    
+    public int run(int a) {
+        int b = 4;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d
new file mode 100644
index 0000000..4cd1fe6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_10.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d
new file mode 100644
index 0000000..a5d81e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_11.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d
new file mode 100644
index 0000000..80cab63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_12.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d
new file mode 100644
index 0000000..2e40ee6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_13.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d
new file mode 100644
index 0000000..ebba20d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_2.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.java
new file mode 100644
index 0000000..7f40e12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_2 {
+    
+    public int run(int a) {
+        int b = -3;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d
new file mode 100644
index 0000000..0b65731
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_3.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -3000
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.java
new file mode 100644
index 0000000..ffd9b90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_3 {
+    
+    public int run(int a) {
+        int b = -3000;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d
new file mode 100644
index 0000000..9b96729
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_4.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.java
new file mode 100644
index 0000000..759ed42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_4 {
+    
+    public int run(float a) {
+        int b = 15;
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d
new file mode 100644
index 0000000..96218a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_5.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.java
new file mode 100644
index 0000000..7dd4dfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_5 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d
new file mode 100644
index 0000000..9139eec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_6.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.java
new file mode 100644
index 0000000..d59e8a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_6 {
+    
+    public int run(int a) {
+        int b = 1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d
new file mode 100644
index 0000000..9970a21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_7.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.java
new file mode 100644
index 0000000..215598b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_7 {
+    
+    public int run(int a) {
+        int b = 32767;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d
new file mode 100644
index 0000000..aa2208b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_8.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -32768
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.java
new file mode 100644
index 0000000..77a94a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_8 {
+    
+    public int run(int a) {
+        int b = -32768;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d
new file mode 100644
index 0000000..91c45f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_9.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.java
new file mode 100644
index 0000000..6c6d3cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_9 {
+    
+    public int run(int a) {
+        int b = 0;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/Test_rem_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/Test_rem_int_lit8.java
new file mode 100644
index 0000000..ffeeb40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/Test_rem_int_lit8.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_1;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_2;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_3;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_4;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_5;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_6;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_7;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_8;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_9;
+
+public class Test_rem_int_lit8 extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(0, t.run(8));
+    }
+
+    /**
+     * @title Arguments = 123, 4
+     */
+    public void testN2() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(3, t.run(123));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(-2, t.run(-10));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_lit8_2 t = new T_rem_int_lit8_2();
+        assertEquals(0, t.run(123));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_lit8_3 t = new T_rem_int_lit8_3();
+        assertEquals(-3, t.run(-123));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_lit8_4 t = new T_rem_int_lit8_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Byte.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_lit8_5 t = new T_rem_int_lit8_5();
+        assertEquals(0, t.run(Byte.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Byte.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_lit8_6 t = new T_rem_int_lit8_6();
+        assertEquals(0, t.run(Byte.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Byte.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_lit8_6 t = new T_rem_int_lit8_6();
+        assertEquals(0, t.run(Byte.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, 127
+     */
+    public void testB4() {
+        T_rem_int_lit8_7 t = new T_rem_int_lit8_7();
+        assertEquals(-2, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, 127
+     */
+    public void testB5() {
+        T_rem_int_lit8_7 t = new T_rem_int_lit8_7();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Arguments = 1, -128
+     */
+    public void testB6() {
+        T_rem_int_lit8_8 t = new T_rem_int_lit8_8();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_lit8_9 t = new T_rem_int_lit8_9();
+        try {
+            t.run(1);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d
new file mode 100644
index 0000000..7d69475
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_1.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.java
new file mode 100644
index 0000000..bf0f39d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_1 {
+
+    public int run(int a) {
+        int b = 4;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d
new file mode 100644
index 0000000..15ce8db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_10.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d
new file mode 100644
index 0000000..9fb2f77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_11.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d
new file mode 100644
index 0000000..cc7cd5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_12.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d
new file mode 100644
index 0000000..c35575e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_13.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d
new file mode 100644
index 0000000..4887086
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_2.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.java
new file mode 100644
index 0000000..3c05ec4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_2 {
+
+    public int run(int a) {
+        int b = -3;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d
new file mode 100644
index 0000000..43413ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_3.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -120
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.java
new file mode 100644
index 0000000..7e97956
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_3 {
+
+    public int run(int a) {
+        int b = -120;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d
new file mode 100644
index 0000000..48cd590
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_4.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.java
new file mode 100644
index 0000000..431ee77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_4 {
+
+    public int run(float a) {
+        int b = 10;
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d
new file mode 100644
index 0000000..ec86de1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_5.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.java
new file mode 100644
index 0000000..c02f3e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_5 {
+
+    public int run(int a) {
+        int b = -1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d
new file mode 100644
index 0000000..8300e22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_6.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.java
new file mode 100644
index 0000000..92ad4d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_6 {
+
+    public int run(int a) {
+        int b = 1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d
new file mode 100644
index 0000000..b1eeb15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_7.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.java
new file mode 100644
index 0000000..b4369d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_7 {
+
+    public int run(int a) {
+        int b = 127;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d
new file mode 100644
index 0000000..08b0729
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_8.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -128
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.java
new file mode 100644
index 0000000..f28f470
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_8 {
+
+    public int run(int a) {
+        int b = -128;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d
new file mode 100644
index 0000000..3c28049
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_9.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.java
new file mode 100644
index 0000000..5368944
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_9 {
+
+    public int run(int a) {
+        int b = 0;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/Test_rem_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/Test_rem_long.java
new file mode 100644
index 0000000..271cd75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/Test_rem_long.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_long.d.T_rem_long_1;
+import dot.junit.opcodes.rem_long.d.T_rem_long_3;
+
+public class Test_rem_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 10000000000l, 4000000000l
+     */
+    public void testN1() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(2000000000l, t.run(10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Arguments = 1234567890123l, 123456789l
+     */
+    public void testN2() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(123l, t.run(1234567890123l, 123456789l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(0l, 1234567890123l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(2000000000l, t.run(10000000000l, -4000000000l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, -4000000000l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_long_3 t = new T_rem_long_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1l
+     */
+    public void testB1() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB2() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1l
+     */
+    public void testB3() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(-1l, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(1l, t.run(1l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(1l, t.run(1l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_long_1 t = new T_rem_long_1();
+        try {
+            t.run(1234567890123l, 0l);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d
new file mode 100644
index 0000000..37cfd4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_1.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.java
new file mode 100644
index 0000000..34e776a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long.d;
+
+public class T_rem_long_1 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d
new file mode 100644
index 0000000..867c397
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d
new file mode 100644
index 0000000..05b4c51
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_3.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       rem-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.java
new file mode 100644
index 0000000..33c00a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long.d;
+
+public class T_rem_long_3 {
+
+    public long run(long a, double b) {
+        return a % (long)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d
new file mode 100644
index 0000000..165258a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_4.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       rem-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d
new file mode 100644
index 0000000..ab089c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_5.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)J
+.limit regs 14
+
+       rem-long v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d
new file mode 100644
index 0000000..eb64800
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_6.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/Test_rem_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/Test_rem_long_2addr.java
new file mode 100644
index 0000000..e32f69c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/Test_rem_long_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_1;
+import dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_3;
+
+public class Test_rem_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 10000000000l, 4000000000l
+     */
+    public void testN1() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(2000000000l, t.run(10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Arguments = 1234567890123l, 123456789l
+     */
+    public void testN2() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(123l, t.run(1234567890123l, 123456789l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(0l, 1234567890123l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(2000000000l, t.run(10000000000l, -4000000000l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, -4000000000l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_long_2addr_3 t = new T_rem_long_2addr_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1l
+     */
+    public void testB1() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB2() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1l
+     */
+    public void testB3() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(-1l, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(1l, t.run(1l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(1l, t.run(1l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        try {
+            t.run(1234567890123l, 0l);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  (types of arguments - int, long).
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d
new file mode 100644
index 0000000..83c111e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_1.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.java
new file mode 100644
index 0000000..197ce60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long_2addr.d;
+
+public class T_rem_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d
new file mode 100644
index 0000000..79c9750
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_2.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d
new file mode 100644
index 0000000..4f62b19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_3.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       rem-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.java
new file mode 100644
index 0000000..f86c707
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long_2addr.d;
+
+public class T_rem_long_2addr_3 {
+
+    public long run(long a, double b) {
+        return a % (long)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d
new file mode 100644
index 0000000..2d0d1c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_4.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       rem-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d
new file mode 100644
index 0000000..7d4ed96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_5.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)J
+.limit regs 14
+
+       rem-long/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d
new file mode 100644
index 0000000..8952ae1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_6.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Runner.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Runner.java
new file mode 100644
index 0000000..a2610ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Runner.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object;
+
+public interface Runner {
+    public void doit();
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/RunnerGenerator.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/RunnerGenerator.java
new file mode 100644
index 0000000..04644d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/RunnerGenerator.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object;
+
+public interface RunnerGenerator {
+    public Runner run();
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Test_return_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Test_return_object.java
new file mode 100644
index 0000000..9336829
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Test_return_object.java
@@ -0,0 +1,222 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.return_object.d.T_return_object_1;
+import dot.junit.opcodes.return_object.d.T_return_object_12;
+import dot.junit.opcodes.return_object.d.T_return_object_13;
+import dot.junit.opcodes.return_object.d.T_return_object_2;
+import dot.junit.opcodes.return_object.d.T_return_object_6;
+import dot.junit.opcodes.return_object.d.T_return_object_8;
+
+
+public class Test_return_object extends DxTestCase {
+    /**
+     * @title simple
+     */
+    public void testN1() {
+        T_return_object_1 t = new T_return_object_1();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title simple
+     */
+    public void testN2() {
+        T_return_object_1 t = new T_return_object_1();
+        assertEquals(t, t.run2());
+    }
+
+    /**
+     * @title return null
+     */
+    public void testN4() {
+        T_return_object_2 t = new T_return_object_2();
+        assertNull(t.run());
+    }
+
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN5() {
+        T_return_object_6 t = new T_return_object_6();
+        assertEquals("hello", t.run());
+    }
+
+
+    /**
+     * @title assignment compatibility (TChild returned as TSuper)
+     */
+    public void testN7() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_12
+        //@uses dot.junit.opcodes.return_object.d.TChild
+        //@uses dot.junit.opcodes.return_object.d.TSuper
+        //@uses dot.junit.opcodes.return_object.d.TInterface
+        T_return_object_12 t = new T_return_object_12();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title assignment compatibility (TChild returned as TInterface)
+     */
+    public void testN8() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_13
+        //@uses dot.junit.opcodes.return_object.d.TChild
+        //@uses dot.junit.opcodes.return_object.d.TSuper
+        //@uses dot.junit.opcodes.return_object.d.TInterface
+        T_return_object_13 t = new T_return_object_13();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_return_object_8 t = new T_return_object_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title method's return type - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+  
+    /**
+     * @constraint B1 
+     * @title types of argument - int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of argument - long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title assignment incompatible references
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_14
+        //@uses dot.junit.opcodes.return_object.d.TChild
+        //@uses dot.junit.opcodes.return_object.d.TSuper
+        //@uses dot.junit.opcodes.return_object.d.TInterface
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title assignment incompatible references
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_15
+        //@uses dot.junit.opcodes.return_object.Runner
+        //@uses dot.junit.opcodes.return_object.RunnerGenerator
+        //@uses dot.junit.opcodes.return_object.d.TSuper2
+        try {
+            RunnerGenerator rg = (RunnerGenerator) Class.forName(
+                    "dot.junit.opcodes.return_object.d.T_return_object_15").newInstance();
+            Runner r = rg.run();
+            assertFalse(r instanceof Runner);
+            assertFalse(Runner.class.isAssignableFrom(r.getClass()));
+            // only upon invocation of a concrete method,
+            // a java.lang.IncompatibleClassChangeError is thrown
+            r.doit();
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.d
new file mode 100644
index 0000000..b537c47
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_1.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 3
+
+       const-string v1, "hello"
+       return-object v1
+.end method
+
+.method public run2()Ljava/lang/Object;
+.limit regs 3
+       return-object v2
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.java
new file mode 100644
index 0000000..ce9aed3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+public class T_return_object_1 {
+
+    public String run() {
+        return "hello";
+    }
+    
+    public Object run2() {
+        return this;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.d
new file mode 100644
index 0000000..66e762a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_10.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const v1, 123
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.d
new file mode 100644
index 0000000..c632133
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_11.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const-wide v1, 123
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.d
new file mode 100644
index 0000000..ea4c11a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_12.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TSuper;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/return_object/d/TChild
+       invoke-direct {v1}, dot/junit/opcodes/return_object/d/TChild/<init>()V
+       return-object v1
+.end method
+
+.method public run()Z
+.limit regs 4
+
+       invoke-direct {v3}, dot/junit/opcodes/return_object/d/T_return_object_12/test()Ldot/junit/opcodes/return_object/d/TSuper;
+       move-result-object v2
+       instance-of v0, v2, dot/junit/opcodes/return_object/d/TChild
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.java
new file mode 100644
index 0000000..9040acc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+
+public class T_return_object_12 {
+    
+    private TSuper test() {
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TSuper t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.d
new file mode 100644
index 0000000..4cae4ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_13.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TInterface;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/return_object/d/TChild
+       invoke-direct {v1}, dot/junit/opcodes/return_object/d/TChild/<init>()V
+       return-object v1
+.end method
+
+.method public run()Z
+.limit regs 4
+Label0:
+
+       invoke-direct {v3}, dot/junit/opcodes/return_object/d/T_return_object_13/test()Ldot/junit/opcodes/return_object/d/TInterface;
+       move-result-object v2
+       instance-of v2, v2, dot/junit/opcodes/return_object/d/TChild
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.java
new file mode 100644
index 0000000..cb180d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+
+public class T_return_object_13 {
+    
+    private TInterface test() {
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TInterface t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.d
new file mode 100644
index 0000000..cff2b12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_14.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TChild;
+.limit regs 6
+
+    new-instance v0, dot/junit/opcodes/return_object/d/TSuper
+    invoke-direct {v0}, dot/junit/opcodes/return_object/d/TSuper/<init>()V
+
+    return-object v0
+.end method
+
+
+.method public run()Z
+.limit regs 6
+
+    invoke-direct {v5}, dot/junit/opcodes/return_object/d/T_return_object_14/test()Ldot/junit/opcodes/return_object/d/TChild;
+    move-result-object v1
+
+    instance-of v0, v1, dot/junit/opcodes/return_object/d/TChild
+
+    return v0
+
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.d
new file mode 100644
index 0000000..29377fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_15.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_15
+.super java/lang/Object
+.implements dot/junit/opcodes/return_object/RunnerGenerator
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ldot/junit/opcodes/return_object/Runner;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/return_object/d/TSuper2
+       invoke-direct {v1}, dot/junit/opcodes/return_object/d/TSuper2/<init>()V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.d
new file mode 100644
index 0000000..0b8dc5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_16.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+      return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.d
new file mode 100644
index 0000000..f892233
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_2.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const/4 v1, 0
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.java
new file mode 100644
index 0000000..916dcdd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+public class T_return_object_2 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.d
new file mode 100644
index 0000000..089fde7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_3.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.d
new file mode 100644
index 0000000..9b30169
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_4.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 3
+
+      const v2, 3.14    
+      return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.d
new file mode 100644
index 0000000..db9df1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_5.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+      return-object v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.d
new file mode 100644
index 0000000..582bd74
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.d
@@ -0,0 +1,64 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_6.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private static test()Ljava/lang/String;
+.limit regs 5
+
+       const-string v0, "aaa"
+       const-string v1, "bbb"
+       const-string v2, "ccc"
+       const-string v3, "ddd"
+       return-object v3
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 10
+       const-string v1, "a"
+       const-string v2, "b"
+       const-string v3, "c"
+       invoke-static {}, dot/junit/opcodes/return_object/d/T_return_object_6/test()Ljava/lang/String;
+       move-result-object v7
+
+       const-string v8, "ddd"
+       if-ne v7, v8, Label43
+
+       const-string v7, "a"
+       if-ne v1, v7, Label43
+
+       const-string v7, "b"
+       if-ne v2, v7, Label43
+
+       const-string v7, "c"
+       if-ne v3, v7, Label43
+
+       const-string v0, "hello"
+       return-object v0
+Label43:
+       const-string v0, "a"
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.java
new file mode 100644
index 0000000..05cd845
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+public class T_return_object_6 {
+
+    public String run() {
+        return "hello";
+    }
+    
+    private static String test() {
+        String a = "aaa";
+        String b = "bbb";
+        String c = "ccc";
+        return "ddd";
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
new file mode 100644
index 0000000..bc2f85f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_8.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()Ljava/lang/String;
+.limit regs 4
+ 
+    monitor-exit v3
+    const-string v0, "abc"
+    return-object v0
+.end method
+
+.method public run()Z
+.limit regs 3
+
+    invoke-direct {v2}, dot/junit/opcodes/return_object/d/T_return_object_8/test()Ljava/lang/String;
+
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.java
new file mode 100644
index 0000000..65fb8e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+public class T_return_object_8 {
+    
+    private synchronized String test() {
+        return "abc";
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.d
new file mode 100644
index 0000000..44f819f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestStubs.java
+.interface dot.junit.opcodes.return_object.d.TInterface
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TSuper 
+.super java/lang/Object
+.implements dot.junit.opcodes.return_object.d.TInterface 
+    
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TChild 
+.super dot.junit.opcodes.return_object.d.TSuper 
+    
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, dot/junit/opcodes/return_object/d/TSuper/<init>()V
+       return-void
+.end method
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TSuper2
+.super java/lang/Object
+ 
+    
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TestStubs 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TetsStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TetsStubs.java
new file mode 100644
index 0000000..575ec0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TetsStubs.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+
+interface TInterface{
+    
+}
+
+class TSuper implements TInterface {
+    
+}
+
+class TChild extends TSuper {
+    
+}
+
+class TSuper2 {
+    
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/Test_return_void.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/Test_return_void.java
new file mode 100644
index 0000000..e5903e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/Test_return_void.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_void;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.return_void.d.T_return_void_1;
+import dot.junit.opcodes.return_void.d.T_return_void_3;
+
+public class Test_return_void extends DxTestCase {
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_return_void_1 t = new T_return_void_1();
+        assertEquals(123456, t.run());
+    }
+
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_return_void_3 t = new T_return_void_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.return_void.d.T_return_void_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.return_void.d.T_return_void_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - wide
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.return_void.d.T_return_void_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.d
new file mode 100644
index 0000000..739e288
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.d
@@ -0,0 +1,65 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_void_1.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+        
+    invoke-static {}, dot/junit/opcodes/return_void/d/T_return_void_1/test()V
+
+    const v4, 1    
+    if-ne v1, v4, Label0
+    
+    const v4, 2    
+    if-ne v2, v4, Label0
+
+    const v4, 3
+    if-ne v3, v4, Label0
+    
+    const v0, 123456
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method private static test()V
+.limit regs 5
+    
+    const v0, 9999
+    const v1, 0xaaa
+    const v2, 0xbbbb
+    const v3, 0xcccc
+    const v4, 0xdddd
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.java
new file mode 100644
index 0000000..60615c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_void.d;
+
+public class T_return_void_1 {
+
+    public int run() {
+        test();
+        return 123456;
+    }
+    
+    private static void test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
new file mode 100644
index 0000000..ff12b06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_void_3.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()V
+.limit regs 1
+
+    monitor-exit v0
+    return-void
+.end method
+
+
+
+.method public run()Z
+.limit regs 1
+
+    invoke-direct {v0}, dot/junit/opcodes/return_void/d/T_return_void_3/test()V
+
+    const v0, 1
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.java
new file mode 100644
index 0000000..de9cb3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_void.d;
+
+public class T_return_void_3 {
+    
+    private synchronized void test() {
+        return;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.d
new file mode 100644
index 0000000..172f5d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_void_5.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.d
new file mode 100644
index 0000000..001e8b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_void_6.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.d
new file mode 100644
index 0000000..3aee8df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_void_7.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/Test_return_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/Test_return_wide.java
new file mode 100644
index 0000000..c97f0d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/Test_return_wide.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.return_wide.d.T_return_wide_1;
+import dot.junit.opcodes.return_wide.d.T_return_wide_3;
+
+public class Test_return_wide extends DxTestCase {
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_return_wide_1 t = new T_return_wide_1();
+        assertEquals(123456, t.run());
+    }
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_return_wide_3 t = new T_return_wide_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title return-wide on single-width register
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d
new file mode 100644
index 0000000..57ffaf3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d
@@ -0,0 +1,71 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_1.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 10
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+    
+    const-wide v4, 0xdddd
+        
+    invoke-static {}, dot/junit/opcodes/return_wide/d/T_return_wide_1/test()J
+    move-result-wide v6
+    
+    cmp-long v0, v4, v6
+    if-nez v0, Label0
+
+    const v4, 1    
+    if-ne v1, v4, Label0
+    
+    const v4, 2    
+    if-ne v2, v4, Label0
+
+    const v4, 3
+    if-ne v3, v4, Label0
+    
+    const v0, 123456
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method private static test()J
+.limit regs 6
+    
+    const v0, 9999
+    const v1, 0xaaa
+    const v2, 0xbbbb
+    const v3, 0xcccc
+    
+    const-wide v4, 0xdddd
+    return-wide v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.java
new file mode 100644
index 0000000..a96cbef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_wide.d;
+
+public class T_return_wide_1 {
+
+    public int run() {
+        test();
+        return 123456;
+    }
+    
+    private static long test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return 1l;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
new file mode 100644
index 0000000..1a6fdb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_3.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()D
+.limit regs 4
+
+    monitor-exit v3
+    const-wide v0, 1.0
+    return-wide v0
+.end method
+
+
+
+.method public run()Z
+.limit regs 1
+
+    invoke-direct {v0}, dot/junit/opcodes/return_wide/d/T_return_wide_3/test()D
+
+    const v0, 1
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.java
new file mode 100644
index 0000000..b0bae67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_wide.d;
+
+public class T_return_wide_3 {
+    
+    private synchronized long test() {
+        return 1;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d
new file mode 100644
index 0000000..692ac2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_5.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    const v0, 1
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d
new file mode 100644
index 0000000..3360ab7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_6.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 6
+    
+    const-wide v0, 1
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d
new file mode 100644
index 0000000..0363fcc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_7.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    return-wide v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d
new file mode 100644
index 0000000..be64ae1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_8.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    const v0, 0
+    const v1, 0
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/Test_rsub_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/Test_rsub_int.java
new file mode 100644
index 0000000..bb63e7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/Test_rsub_int.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_1;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_2;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_3;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_4;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_5;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_6;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_7;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_12;
+
+public class Test_rsub_int extends DxTestCase {
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN1() {
+        T_rsub_int_1 t = new T_rsub_int_1();
+        assertEquals("Subtest_1 is failed", -4, t.run(8));
+        assertEquals("Subtest_2 is failed",45, t.run1(15));
+        assertEquals("Subtest_3 is failed",0, t.run2(20));
+        assertEquals("Subtest_4 is failed",-35, t.run3(10));
+        assertEquals("Subtest_5 is failed",-20, t.run4(-50));
+        assertEquals("Subtest_6 is failed",20, t.run5(-70));
+    }
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN2() {
+        T_rsub_int_2 t = new T_rsub_int_2();
+        assertEquals("Subtest_1 is failed",255, t.run(0));
+        assertEquals("Subtest_2 is failed",-32768, t.run1(0));
+        assertEquals("Subtest_3 is failed",-15, t.run2(15));
+        assertEquals("Subtest_4 is failed",123, t.run2(-123));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_rsub_int_12 t = new T_rsub_int_12();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = 0, b-a = -Integer.MAX_VALUE
+     * 2: a = Short.MAX_VALUE, b = 0, b-a = -Short.MAX_VALUE
+     */
+    public void testB1() {
+        T_rsub_int_3 t = new T_rsub_int_3();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(-Short.MAX_VALUE, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 0, b-a = Integer.MIN_VALUE
+     * 2: a = Short.MIN_VALUE, b = 0, b-a = 32768
+     */
+    public void testB2() {
+        T_rsub_int_3 t = new T_rsub_int_3();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(32768, t.run(Short.MIN_VALUE));
+    }
+    
+    /**
+     * @title (a = 0, b = 0, b-a = 0)
+     */
+    public void testB3() {
+        T_rsub_int_3 t = new T_rsub_int_3();
+        assertEquals(0, t.run(0));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Short.MAX_VALUE, b-a = Short.MAX_VALUE
+     * 2: a = 1, b = Short.MAX_VALUE, b-a = 32766
+     * 3: a = -1, b = Short.MAX_VALUE, b-a = 32768
+     */
+    public void testB4() {
+        T_rsub_int_4 t = new T_rsub_int_4();
+        assertEquals(Short.MAX_VALUE, t.run(0));
+        assertEquals(32766, t.run(1));
+        assertEquals(32768, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = Short.MAX_VALUE, b-a = -2147450881
+     * 2: a = Integer.MAX_VALUE, b = Short.MAX_VALUE, b-a = -2147450880
+     * 3: a = Short.MIN_VALUE, b = Short.MAX_VALUE, b-a = 65535
+     */
+    public void testB5() {
+        T_rsub_int_4 t = new T_rsub_int_4();
+        assertEquals(-2147450881, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147450880, t.run(Integer.MAX_VALUE));
+        assertEquals(65535, t.run(Short.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Short.MIN_VALUE, b-a = Short.MIN_VALUE
+     * 2: a = 1, b = Short.MIN_VALUE, b-a = -32769
+     * 3: a = -1, b = Short.MIN_VALUE, b-a = -32767
+     */
+    public void testB6() {
+        T_rsub_int_5 t = new T_rsub_int_5();
+        assertEquals(Short.MIN_VALUE, t.run(0));
+        assertEquals(-32769, t.run(1));
+        assertEquals(-32767, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = Short.MIN_VALUE, b-a = 2147450881
+     * 2: a = Integer.MIN_VALUE, b = Short.MIN_VALUE, b-a = 2147450880
+     * 3: a = Short.MAX_VALUE, b = Short.MIN_VALUE, b-a = -65535
+     */
+    public void testB7() {
+        T_rsub_int_5 t = new T_rsub_int_5();
+        assertEquals(2147450881, t.run(Integer.MAX_VALUE));
+        assertEquals(2147450880, t.run(Integer.MIN_VALUE));
+        assertEquals(-65535, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = -1, b-a = Integer.MAX_VALUE
+     * 2: a = Short.MIN_VALUE, b = -1, b-a = Short.MAX_VALUE 
+     */
+    public void testB8() {
+        T_rsub_int_6 t = new T_rsub_int_6();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(Short.MAX_VALUE, t.run(Short.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = -1, b-a = Integer.MIN_VALUE
+     * 2: a = Short.MAX_VALUE, b = -1, b-a = -32768
+     */
+    public void testB9() {
+        T_rsub_int_6 t = new T_rsub_int_6();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(-32768, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 1, b-a = -Integer.MAX_VALUE
+     * 2: a = Integer.MAX_VALUE, b = 1, b-a = -2147483646
+     */
+    public void testB10() {
+        T_rsub_int_7 t = new T_rsub_int_7();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147483646, t.run(Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Short.MIN_VALUE, b = 1, b-a = 32769
+     * 2: a = Short.MAX_VALUE, b = 1, b-a = -32766
+     */
+    public void testB11() {
+        T_rsub_int_7 t = new T_rsub_int_7();
+        assertEquals(32769, t.run(Short.MIN_VALUE));
+        assertEquals(-32766, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title (a = 1, b = 1, b-a = 0)
+     */
+    public void testB12() {
+        T_rsub_int_7 t = new T_rsub_int_7();
+        assertEquals(0, t.run(1));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d
new file mode 100644
index 0000000..b5124e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_1.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 4
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 60
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 20
+       return v0
+.end method
+
+.method public run3(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -25
+       return v0
+.end method
+
+.method public run4(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -70
+       return v0
+.end method
+
+.method public run5(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -50
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.java
new file mode 100644
index 0000000..f90f354
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_1 {
+    
+    public int run(int a) {
+        int b = 4;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = 60;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 20;
+        return b-a;
+    }
+    
+    public int run3(int a) {
+        int b = -25;
+        return b-a;
+    }
+    
+    public int run4(int a) {
+        int b = -70;
+        return b-a;
+    }
+    
+    public int run5(int a) {
+        int b = -50;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d
new file mode 100644
index 0000000..544a12c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_10.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d
new file mode 100644
index 0000000..e9a9b26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_11.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d
new file mode 100644
index 0000000..9c1ffec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_12.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       rsub-int v0, v3, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.java
new file mode 100644
index 0000000..d3b3a4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_12 {
+    
+    public int run(float a) {
+        int b = 10;
+        return b-(int)a;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d
new file mode 100644
index 0000000..4d63eea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_2.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 255
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -32768
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.java
new file mode 100644
index 0000000..b1d8e90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_2 {
+    
+    public int run(int a) {
+        int b = 255;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = -32768;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d
new file mode 100644
index 0000000..23efe0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_3.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.java
new file mode 100644
index 0000000..b060bd2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_3 {
+    
+    public int run(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d
new file mode 100644
index 0000000..c37f9da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_4.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.java
new file mode 100644
index 0000000..5b38c5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_4 {
+    
+    public int run(int a) {
+        int b = Short.MAX_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d
new file mode 100644
index 0000000..473020a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_5.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -32768
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.java
new file mode 100644
index 0000000..259002c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_5 {
+    
+    public int run(int a) {
+        int b = Short.MIN_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d
new file mode 100644
index 0000000..e902f19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_6.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.java
new file mode 100644
index 0000000..221f348
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_6 {
+    
+    public int run(int a) {
+        int b = -1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d
new file mode 100644
index 0000000..6bb3571
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_7.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.java
new file mode 100644
index 0000000..180e76c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_7 {
+    
+    public int run(int a) {
+        int b = 1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d
new file mode 100644
index 0000000..9494e21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_8.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v4, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d
new file mode 100644
index 0000000..12b5fe4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_9.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/Test_rsub_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/Test_rsub_int_lit8.java
new file mode 100644
index 0000000..44dc89a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/Test_rsub_int_lit8.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_1;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_2;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_3;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_4;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_5;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_6;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_7;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_12;
+
+public class Test_rsub_int_lit8 extends DxTestCase {
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN1() {
+        T_rsub_int_lit8_1 t = new T_rsub_int_lit8_1();
+        assertEquals("Subtest_1 is failed", -4, t.run(8));
+        assertEquals("Subtest_2 is failed",45, t.run1(15));
+        assertEquals("Subtest_3 is failed",0, t.run2(20));
+        assertEquals("Subtest_4 is failed",-35, t.run3(10));
+        assertEquals("Subtest_5 is failed",-20, t.run4(-50));
+        assertEquals("Subtest_6 is failed",20, t.run5(-70));
+    }
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN2() {
+        T_rsub_int_lit8_2 t = new T_rsub_int_lit8_2();
+        assertEquals("Subtest_1 is failed",123, t.run(0));
+        assertEquals("Subtest_2 is failed",-123, t.run1(0));
+        assertEquals("Subtest_3 is failed",-15, t.run2(15));
+        assertEquals("Subtest_4 is failed",85, t.run2(-85));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_rsub_int_lit8_12 t = new T_rsub_int_lit8_12();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = 0, b-a = -Integer.MAX_VALUE
+     * 2: a = Byte.MAX_VALUE, b = 0, b-a = -Byte.MAX_VALUE
+     */
+    public void testB1() {
+        T_rsub_int_lit8_3 t = new T_rsub_int_lit8_3();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(-Byte.MAX_VALUE, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 0, b-a = Integer.MIN_VALUE
+     * 2: a = Byte.MIN_VALUE, b = 0, b-a = 128
+     */
+    public void testB2() {
+        T_rsub_int_lit8_3 t = new T_rsub_int_lit8_3();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(128, t.run(Byte.MIN_VALUE));
+    }
+    
+    /**
+     * @title (a = 0, b = 0, b-a = 0)
+     */
+    public void testB3() {
+        T_rsub_int_lit8_3 t = new T_rsub_int_lit8_3();
+        assertEquals(0, t.run(0));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Byte.MAX_VALUE, b-a = Byte.MAX_VALUE
+     * 2: a = 1, b = Byte.MAX_VALUE, b-a = 126
+     * 3: a = -1, b = Byte.MAX_VALUE, b-a = 128
+     */
+    public void testB4() {
+        T_rsub_int_lit8_4 t = new T_rsub_int_lit8_4();
+        assertEquals(Byte.MAX_VALUE, t.run(0));
+        assertEquals(126, t.run(1));
+        assertEquals(128, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = Byte.MAX_VALUE, b-a = -2147483521
+     * 2: a = Integer.MAX_VALUE, b = Byte.MAX_VALUE, b-a = -2147483520
+     * 3: a = Byte.MIN_VALUE, b = Byte.MAX_VALUE, b-a = 255
+     */
+    public void testB5() {
+        T_rsub_int_lit8_4 t = new T_rsub_int_lit8_4();
+        assertEquals(-2147483521, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147483520, t.run(Integer.MAX_VALUE));
+        assertEquals(255, t.run(Byte.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Byte.MIN_VALUE, b-a = Byte.MIN_VALUE
+     * 2: a = 1, b = Byte.MIN_VALUE, b-a = -129
+     * 3: a = -1, b = Byte.MIN_VALUE, b-a = -127
+     */
+    public void testB6() {
+        T_rsub_int_lit8_5 t = new T_rsub_int_lit8_5();
+        assertEquals(Byte.MIN_VALUE, t.run(0));
+        assertEquals(-129, t.run(1));
+        assertEquals(-127, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = Byte.MIN_VALUE, b-a = 2147483521
+     * 2: a = Integer.MIN_VALUE, b = Byte.MIN_VALUE, b-a = 2147483520
+     * 3: a = Byte.MAX_VALUE, b = Byte.MIN_VALUE, b-a = -255
+     */
+    public void testB7() {
+        T_rsub_int_lit8_5 t = new T_rsub_int_lit8_5();
+        assertEquals(2147483521, t.run(Integer.MAX_VALUE));
+        assertEquals(2147483520, t.run(Integer.MIN_VALUE));
+        assertEquals(-255, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = -1, b-a = Integer.MAX_VALUE
+     * 2: a = Byte.MIN_VALUE, b = -1, b-a = Byte.MAX_VALUE 
+     */
+    public void testB8() {
+        T_rsub_int_lit8_6 t = new T_rsub_int_lit8_6();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(Byte.MAX_VALUE, t.run(Byte.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = -1, b-a = Integer.MIN_VALUE
+     * 2: a = Byte.MAX_VALUE, b = -1, b-a = Byte.MIN_VALUE
+     */
+    public void testB9() {
+        T_rsub_int_lit8_6 t = new T_rsub_int_lit8_6();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(Byte.MIN_VALUE, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 1, b-a = -Integer.MAX_VALUE
+     * 2: a = Integer.MAX_VALUE, b = 1, b-a = -2147483646
+     */
+    public void testB10() {
+        T_rsub_int_lit8_7 t = new T_rsub_int_lit8_7();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147483646, t.run(Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Byte.MIN_VALUE, b = 1, b-a = 129
+     * 2: a = Byte.MAX_VALUE, b = 1, b-a = -126
+     */
+    public void testB11() {
+        T_rsub_int_lit8_7 t = new T_rsub_int_lit8_7();
+        assertEquals(129, t.run(Byte.MIN_VALUE));
+        assertEquals(-126, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title (a = 1, b = 1, b-a = 0)
+     */
+    public void testB12() {
+        T_rsub_int_lit8_7 t = new T_rsub_int_lit8_7();
+        assertEquals(0, t.run(1));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d
new file mode 100644
index 0000000..fd45062
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_1.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 4
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 60
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 20
+       return v0
+.end method
+
+.method public run3(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -25
+       return v0
+.end method
+
+.method public run4(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -70
+       return v0
+.end method
+
+.method public run5(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -50
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.java
new file mode 100644
index 0000000..e489328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 4;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = 60;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 20;
+        return b-a;
+    }
+    
+    public int run3(int a) {
+        int b = -25;
+        return b-a;
+    }
+    
+    public int run4(int a) {
+        int b = -70;
+        return b-a;
+    }
+    
+    public int run5(int a) {
+        int b = -50;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d
new file mode 100644
index 0000000..a8e37a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_10.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d
new file mode 100644
index 0000000..615eede
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_11.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d
new file mode 100644
index 0000000..7490328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_12.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.java
new file mode 100644
index 0000000..9612590
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_12 {
+    
+    public int run(float a) {
+        int b = 10;
+        return b-(int)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d
new file mode 100644
index 0000000..fa026fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_2.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 123
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -123
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.java
new file mode 100644
index 0000000..036ec06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 123;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = -123;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d
new file mode 100644
index 0000000..b9b5c3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_3.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.java
new file mode 100644
index 0000000..deb1885
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d
new file mode 100644
index 0000000..b330a45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_4.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.java
new file mode 100644
index 0000000..72ddcff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_4 {
+    
+    public int run(int a) {
+        int b = Byte.MAX_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d
new file mode 100644
index 0000000..77a0e8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_5.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -128
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.java
new file mode 100644
index 0000000..1ec8d63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = Byte.MIN_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d
new file mode 100644
index 0000000..bd5d5ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_6.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.java
new file mode 100644
index 0000000..bfe342c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_6 {
+    
+    public int run(int a) {
+        int b = -1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d
new file mode 100644
index 0000000..18cd602
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_7.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.java
new file mode 100644
index 0000000..ca23fb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_7 {
+    
+    public int run(int a) {
+        int b = 1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d
new file mode 100644
index 0000000..69df5ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_8.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v4, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d
new file mode 100644
index 0000000..4db3540
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_9.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/TestStubs.java
new file mode 100644
index 0000000..4c49c61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget;
+
+public class TestStubs {
+    // used by testVFE4
+    private static int TestStubField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/Test_sget.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/Test_sget.java
new file mode 100644
index 0000000..981b19a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/Test_sget.java
@@ -0,0 +1,276 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget.d.T_sget_1;
+import dot.junit.opcodes.sget.d.T_sget_11;
+import dot.junit.opcodes.sget.d.T_sget_12;
+import dot.junit.opcodes.sget.d.T_sget_13;
+import dot.junit.opcodes.sget.d.T_sget_2;
+import dot.junit.opcodes.sget.d.T_sget_5;
+import dot.junit.opcodes.sget.d.T_sget_6;
+import dot.junit.opcodes.sget.d.T_sget_7;
+import dot.junit.opcodes.sget.d.T_sget_8;
+import dot.junit.opcodes.sget.d.T_sget_9;
+
+public class Test_sget extends DxTestCase {
+
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_sget_1 t = new T_sget_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_sget_2 t = new T_sget_2();
+        assertEquals(123f, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget.d.T_sget_1
+        //@uses dot.junit.opcodes.sget.d.T_sget_11
+        T_sget_11 t = new T_sget_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+        T_sget_5 t = new T_sget_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_9 t = new T_sget_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read integer from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget.d.T_sget_6
+        //@uses dot.junit.opcodes.sget.TestStubs
+        try {
+            new T_sget_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget.d.T_sget_12
+        //@uses dot.junit.opcodes.sget.d.T_sget_1
+        try {
+            new T_sget_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.d
new file mode 100644
index 0000000..35e5808
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_1.java
+.class public dot.junit.opcodes.sget.d.T_sget_1
+.super java/lang/Object
+
+.field public static i1 I
+.field protected static p1 I
+.field private static pvt1 I
+
+.method static <clinit>()V
+.limit regs 1
+       const/4 v0, 5
+       sput v0, dot.junit.opcodes.sget.d.T_sget_1.i1 I
+
+       const/16 v0, 10
+       sput v0, dot.junit.opcodes.sget.d.T_sget_1.p1 I
+
+       const/16 v0, 20
+       sput v0, dot.junit.opcodes.sget.d.T_sget_1.pvt1 I
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_1.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.java
new file mode 100644
index 0000000..7514f03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_1 {
+    public static int i1 = 5;
+    protected static int p1 = 10;
+    private static int pvt1 = 20;
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.d
new file mode 100644
index 0000000..fb446be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_11.java
+.class public dot.junit.opcodes.sget.d.T_sget_11
+.super dot/junit/opcodes/sget/d/T_sget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget/d/T_sget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_1.p1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.java
new file mode 100644
index 0000000..26c6cb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_11 extends T_sget_1 {
+
+    public int run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.d
new file mode 100644
index 0000000..b1e9093
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_12.java
+.class public dot.junit.opcodes.sget.d.T_sget_12
+.super dot/junit/opcodes/sget/d/T_sget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget/d/T_sget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_1.pvt1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.java
new file mode 100644
index 0000000..f4232d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_12 {
+    public int run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.d
new file mode 100644
index 0000000..7122dbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_13.java
+.class public dot.junit.opcodes.sget.d.T_sget_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_13.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.java
new file mode 100644
index 0000000..a1d862f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_13 {
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.d
new file mode 100644
index 0000000..43ed17b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_14.java
+.class public dot.junit.opcodes.sget.d.T_sget_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.d
new file mode 100644
index 0000000..a9d65e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_15.java
+.class public dot.junit.opcodes.sget.d.T_sget_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.d
new file mode 100644
index 0000000..71602db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_16.java
+.class public dot.junit.opcodes.sget.d.T_sget_16
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.d
new file mode 100644
index 0000000..e7bdc56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_17.java
+.class public dot.junit.opcodes.sget.d.T_sget_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.d
new file mode 100644
index 0000000..62dbc28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_18.java
+.class public dot.junit.opcodes.sget.d.T_sget_18
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.d
new file mode 100644
index 0000000..0f3374d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_19.java
+.class public dot.junit.opcodes.sget.d.T_sget_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.d
new file mode 100644
index 0000000..de5c7cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_2.java
+.class public dot.junit.opcodes.sget.d.T_sget_2
+.super java/lang/Object
+
+.field public static val F
+
+.method static <clinit>()V
+.limit regs 2
+       const v0, 123.0
+       sput v0, dot.junit.opcodes.sget.d.T_sget_2.val F
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 4
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_2.val F
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.java
new file mode 100644
index 0000000..ff7bdee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_2 {
+
+    public static float val = 123.0f;
+    
+    public float run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.d
new file mode 100644
index 0000000..e03ccd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_20.java
+.class public dot.junit.opcodes.sget.d.T_sget_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.d
new file mode 100644
index 0000000..1932bb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_3.java
+.class public dot.junit.opcodes.sget.d.T_sget_3
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v3, dot.junit.opcodes.sget.d.T_sget_3.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.d
new file mode 100644
index 0000000..761c38f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_4.java
+.class public dot.junit.opcodes.sget.d.T_sget_4
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_4.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.dfh
new file mode 100644
index 0000000..4e7aba1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget/d/T_sget_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget/d/T_sget_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 69ff3a97
+    97 3A FF 69 
+// parsed: offset 12, len 20: signature           : 3483...6e37
+    34 83 98 B4 CA 38 A5 6E 4C 43 40 55 16 41 5A 69 D0 18 6E 37 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 296
+    28 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "I"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 344 (0x000158) "Ljava/lang/Object;"
+    58 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 364 (0x00016c) "T_sget_4.java"
+    6C 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 379 (0x00017b) "V"
+    7B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 382 (0x00017e) "i1"
+    7E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 386 (0x000182) "run"
+    82 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget/d/T_sget_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 391 (0x000187)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 87 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget.d.T_sget_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget.d.T_sget_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget v1, Ldot/junit/opcodes/sget/d/T_sget_4;.i1:I // field@0000
+//@mod            60 01 00 00 
+            60 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 307, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 2F 64 2F 54 5F 73 67 65 74 5F 34 3B 00 
+// parsed: offset 344, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 364, len 15: TYPE_STRING_DATA_ITEM [4] "T_sget_4.java"
+    0D 54 5F 73 67 65 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 379, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 382, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 386, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    // parsed: offset 391, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 392, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 393, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 394, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 395, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 396, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 397, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 398, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 401, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 403, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 404, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 405, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 407, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 391 (0x000187)
+        00 20 00 00 01 00 00 00 87 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.d
new file mode 100644
index 0000000..544f350
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_5.java
+.class public dot.junit.opcodes.sget.d.T_sget_5
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 5
+       iput v2, v3, dot.junit.opcodes.sget.d.T_sget_5.i1 I
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_5.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.java
new file mode 100644
index 0000000..1dac50e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_5 {
+
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.d
new file mode 100644
index 0000000..b78b202
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_6.java
+.class public dot.junit.opcodes.sget.d.T_sget_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.TestStubs.TestStubField I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.java
new file mode 100644
index 0000000..8f81780
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_6 {
+    public int run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.d
new file mode 100644
index 0000000..7423dcd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_7.java
+.class public dot.junit.opcodes.sget.d.T_sget_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_7no_class.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.java
new file mode 100644
index 0000000..8960240
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_7 {
+    public int run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.d
new file mode 100644
index 0000000..915f609
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_8.java
+.class public dot.junit.opcodes.sget.d.T_sget_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_8.i1N I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.java
new file mode 100644
index 0000000..17e16f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_8 {
+    public int run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.d
new file mode 100644
index 0000000..831c623
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.d
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget.d.StubInitError
+.super java/lang/Object
+
+.field public static value I
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput v1, dot.junit.opcodes.sget.d.StubInitError.value I
+       return-void
+.end method
+
+
+.source T_sget_9.java
+.class public dot.junit.opcodes.sget.d.T_sget_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.StubInitError.value I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.java
new file mode 100644
index 0000000..600a586
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_9 {
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/TestStubs.java
new file mode 100644
index 0000000..b353763
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean;
+
+public class TestStubs {
+    // used by testVFE4
+    private static boolean TestStubField = false;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/Test_sget_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/Test_sget_boolean.java
new file mode 100644
index 0000000..ccbeb09
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/Test_sget_boolean.java
@@ -0,0 +1,270 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_9;
+
+public class Test_sget_boolean extends DxTestCase {
+
+    /**
+     * @title get boolean from static field
+     */
+    public void testN1() {
+        T_sget_boolean_1 t = new T_sget_boolean_1();
+        assertEquals(true, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11
+        T_sget_boolean_11 t = new T_sget_boolean_11();
+        assertEquals(true, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_boolean_5 t = new T_sget_boolean_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_boolean_9 t = new T_sget_boolean_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read boolean from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_boolean_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6
+        //@uses dot.junit.opcodes.sget_boolean.TestStubs
+        try {
+            new T_sget_boolean_6().run();
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_boolean_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_boolean_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1
+        try {
+            new T_sget_boolean_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget_boolean shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d
new file mode 100644
index 0000000..1910152
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_1.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1
+.super java/lang/Object
+
+.field public static i1 Z
+.field protected static p1 Z
+.field private static pvt1 Z
+
+.method static <clinit>()V
+.limit regs 1
+       const/4 v0, 1
+       sput-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.i1 Z
+
+       const/16 v0, 1
+       sput-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.p1 Z
+
+       const/16 v0, 1
+       sput-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.pvt1 Z
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.java
new file mode 100644
index 0000000..00604c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_1 {
+    public static boolean i1 = true;
+    protected static boolean p1 = true;
+    private static boolean pvt1 = true;
+    
+    public boolean run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d
new file mode 100644
index 0000000..a37791b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_11.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11
+.super dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.p1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.java
new file mode 100644
index 0000000..46e332b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_11 extends T_sget_boolean_1 {
+
+    public boolean run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d
new file mode 100644
index 0000000..a6d38b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_12.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12
+.super dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.pvt1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.java
new file mode 100644
index 0000000..74566c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_12 {
+    public boolean run(){
+        return true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d
new file mode 100644
index 0000000..f183859
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_13.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.java
new file mode 100644
index 0000000..f69d590
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d
new file mode 100644
index 0000000..90de215
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_14.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d
new file mode 100644
index 0000000..e09d93c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_15.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d
new file mode 100644
index 0000000..f6c3529
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_16.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d
new file mode 100644
index 0000000..25cadc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_17.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d
new file mode 100644
index 0000000..871ff9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_18.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_18
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d
new file mode 100644
index 0000000..1f4f9e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_19.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d
new file mode 100644
index 0000000..79d51ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_20.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d
new file mode 100644
index 0000000..c3271ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_3.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_3
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v3, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_3.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d
new file mode 100644
index 0000000..2ef169f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_4.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dfh
new file mode 100644
index 0000000..2c1995e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 70504938
+    38 49 50 70 
+// parsed: offset 12, len 20: signature           : 1b7b...73d9
+    1B 7B 48 9B 96 83 AB B3 90 67 E9 49 E2 EF 20 98 90 CD 73 D9 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "Ljava/lang/Object;"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 377 (0x000179) "T_sget_boolean_4.java"
+    79 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 400 (0x000190) "V"
+    90 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "Z"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "i1"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "run"
+    9A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "Z"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 6 (0x000006) "i1"
+    00 00 03 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_sget_boolean_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 415 (0x00019f)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9F 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;.i1:Z // field@0000
+//@mod            63 01 00 00 
+            63 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 73 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 3B 00 
+// parsed: offset 357, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 377, len 23: TYPE_STRING_DATA_ITEM [3] "T_sget_boolean_4.java"
+    15 54 5F 73 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 406, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    // parsed: offset 415, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 416, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 417, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 418, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 419, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 420, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 422, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 425, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 427, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 428, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 429, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 431, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 415 (0x00019f)
+        00 20 00 00 01 00 00 00 9F 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d
new file mode 100644
index 0000000..8edf874
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_5.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5
+.super java/lang/Object
+
+.field public i1 Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 1
+       iput-boolean v2, v3, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5.i1 Z
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.java
new file mode 100644
index 0000000..e8c679a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_5 {
+
+    public boolean i1 = false;
+    public boolean run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d
new file mode 100644
index 0000000..2bd59dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_6.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.TestStubs.TestStubField Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.java
new file mode 100644
index 0000000..ecf8943
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_6 {
+    public boolean run(){
+        return true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d
new file mode 100644
index 0000000..32ef38f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_7.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7no_class.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.java
new file mode 100644
index 0000000..4db0e16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_7 {
+    public boolean run(){
+        return true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d
new file mode 100644
index 0000000..04c780c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_8.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8.i1N Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.java
new file mode 100644
index 0000000..42cf804
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_8 {
+    public boolean run(){
+        return true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d
new file mode 100644
index 0000000..0cf9a87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_boolean.d.StubInitError
+.super java/lang/Object
+
+.field public static value Z
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sget_boolean.d.StubInitError.value Z
+       return-void
+.end method
+
+
+.source T_sget_boolean_9.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.StubInitError.value Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.java
new file mode 100644
index 0000000..0956174
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_9 {
+    
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/TestStubs.java
new file mode 100644
index 0000000..3402e8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte;
+
+public class TestStubs {
+    // used by testVFE4
+    private static byte TestStubField = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/Test_sget_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/Test_sget_byte.java
new file mode 100644
index 0000000..9a19f98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/Test_sget_byte.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_1;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_11;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_12;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_13;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_5;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_6;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_7;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_8;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_9;
+
+public class Test_sget_byte extends DxTestCase {
+
+    /**
+     * @title get byte from static field
+     */
+    public void testN1() {
+        T_sget_byte_1 t = new T_sget_byte_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_1
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_11
+        T_sget_byte_11 t = new T_sget_byte_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_byte_5 t = new T_sget_byte_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_byte_9 t = new T_sget_byte_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read byte from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_byte_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_6
+        //@uses dot.junit.opcodes.sget_byte.TestStubs
+        try {
+            new T_sget_byte_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_byte_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_byte_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_12
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_1
+        try {
+            new T_sget_byte_12().run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget_byte shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d
new file mode 100644
index 0000000..314c2b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_1.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_1
+.super java/lang/Object
+
+.field public static i1 B
+.field protected static p1 B
+.field private static pvt1 B
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 77
+       sput-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.i1 B
+
+       const v0, 77
+       sput-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.p1 B
+
+       const v0, 77
+       sput-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.pvt1 B
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.java
new file mode 100644
index 0000000..e1918b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_1 {
+    public static byte i1 = 77;
+    protected static byte p1 = 77;
+    private static byte pvt1 = 77;
+    
+    public byte run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d
new file mode 100644
index 0000000..2c6fb91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_11.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_11
+.super dot/junit/opcodes/sget_byte/d/T_sget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_byte/d/T_sget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.p1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.java
new file mode 100644
index 0000000..bf69487
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_11 extends T_sget_byte_1 {
+
+    public byte run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d
new file mode 100644
index 0000000..f2be588
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_12.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_12
+.super dot/junit/opcodes/sget_byte/d/T_sget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_byte/d/T_sget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.pvt1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.java
new file mode 100644
index 0000000..cbfb2c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_12 {
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d
new file mode 100644
index 0000000..8da3d7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_13.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_13.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.java
new file mode 100644
index 0000000..b2723ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d
new file mode 100644
index 0000000..d64eedc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_14.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d
new file mode 100644
index 0000000..7c02a3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_15.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d
new file mode 100644
index 0000000..09e1280
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_16.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d
new file mode 100644
index 0000000..41d95fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_17.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d
new file mode 100644
index 0000000..e95a5eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_18.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d
new file mode 100644
index 0000000..822c286
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_19.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d
new file mode 100644
index 0000000..e9c6567
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_20.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d
new file mode 100644
index 0000000..800e5f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_3.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_3
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v3, dot.junit.opcodes.sget_byte.d.T_sget_byte_3.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d
new file mode 100644
index 0000000..5e884e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_4.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_4
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_4.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dfh
new file mode 100644
index 0000000..c17b068
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c4b64202
+    02 42 B6 C4 
+// parsed: offset 12, len 20: signature           : e618...6c74
+    E6 18 01 1F 28 B9 CC 8D 4C FC 81 38 DA 39 48 BB 16 05 6C 74 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "B"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_byte_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "B"
+//     return_type_idx: 0 (0x000000) "B"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_byte_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_byte.d.T_sget_byte_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_byte.d.T_sget_byte_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-byte v1, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;.i1:B // field@0000
+//@mod            64 01 00 00 
+            64 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 62 79 74 65 2F 64 2F 54 5F 73 67 65 74 5F 62 79 74 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_sget_byte_4.java"
+    12 54 5F 73 67 65 74 5F 62 79 74 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    // parsed: offset 406, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d
new file mode 100644
index 0000000..ad5d006
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_5.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_5
+.super java/lang/Object
+
+.field public i1 B
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 77
+       iput-byte v2, v3, dot.junit.opcodes.sget_byte.d.T_sget_byte_5.i1 B
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_5.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.java
new file mode 100644
index 0000000..4391486
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_5 {
+
+    public byte i1 = 77;
+    public byte run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d
new file mode 100644
index 0000000..48a4cb8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_6.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.TestStubs.TestStubField B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.java
new file mode 100644
index 0000000..df4e3f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_6 {
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d
new file mode 100644
index 0000000..e887bec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_7.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_7no_class.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.java
new file mode 100644
index 0000000..b865dde
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_7 {
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d
new file mode 100644
index 0000000..96ab1da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_8.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_8.i1N B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.java
new file mode 100644
index 0000000..605616f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_8 {
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d
new file mode 100644
index 0000000..aee1a37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_byte.d.StubInitError
+.super java/lang/Object
+
+.field public static value B
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sget_byte.d.StubInitError.value B
+       return-void
+.end method
+
+
+.source T_sget_byte_9.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.StubInitError.value B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.java
new file mode 100644
index 0000000..3bd966d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_9 {
+    
+    public byte run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/TestStubs.java
new file mode 100644
index 0000000..dc99b6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char;
+
+public class TestStubs {
+    // used by testVFE4
+    private static char TestStubField = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/Test_sget_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/Test_sget_char.java
new file mode 100644
index 0000000..10324a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/Test_sget_char.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_char.d.T_sget_char_1;
+import dot.junit.opcodes.sget_char.d.T_sget_char_11;
+import dot.junit.opcodes.sget_char.d.T_sget_char_12;
+import dot.junit.opcodes.sget_char.d.T_sget_char_13;
+import dot.junit.opcodes.sget_char.d.T_sget_char_5;
+import dot.junit.opcodes.sget_char.d.T_sget_char_6;
+import dot.junit.opcodes.sget_char.d.T_sget_char_7;
+import dot.junit.opcodes.sget_char.d.T_sget_char_8;
+import dot.junit.opcodes.sget_char.d.T_sget_char_9;
+
+public class Test_sget_char extends DxTestCase {
+
+    /**
+     * @title get char from static field
+     */
+    public void testN1() {
+        T_sget_char_1 t = new T_sget_char_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_1
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_11
+        T_sget_char_11 t = new T_sget_char_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_char_5 t = new T_sget_char_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_char_9 t = new T_sget_char_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read char from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_char_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_6
+        //@uses dot.junit.opcodes.sget_char.TestStubs
+        try {
+            new T_sget_char_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_char_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_char_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_12
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_1
+        try {
+            new T_sget_char_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget_char shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d
new file mode 100644
index 0000000..5fc252d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_1.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_1
+.super java/lang/Object
+
+.field public static i1 C
+.field protected static p1 C
+.field private static pvt1 C
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 77
+       sput-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_1.i1 C
+
+       const v0, 77
+       sput-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_1.p1 C
+
+       const v0, 77
+       sput-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_1.pvt1 C
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_1.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.java
new file mode 100644
index 0000000..3a606be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_1 {
+    public static char i1 = 77;
+    protected static char p1 = 77;
+    private static char pvt1 = 77;
+    
+    public char run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d
new file mode 100644
index 0000000..d4d3efb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_11.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_11
+.super dot/junit/opcodes/sget_char/d/T_sget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_char/d/T_sget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_1.p1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.java
new file mode 100644
index 0000000..fd73e27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_11 extends T_sget_char_1 {
+
+    public char run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d
new file mode 100644
index 0000000..708f2db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_12.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_12
+.super dot/junit/opcodes/sget_char/d/T_sget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_char/d/T_sget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_1.pvt1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.java
new file mode 100644
index 0000000..f7affdf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_12 {
+    public char run() {
+        return ' ';
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d
new file mode 100644
index 0000000..eb652bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_13.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_13.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.java
new file mode 100644
index 0000000..b347b53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d
new file mode 100644
index 0000000..c1b8040
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_14.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d
new file mode 100644
index 0000000..dedb8e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_15.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d
new file mode 100644
index 0000000..82a5544
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_16.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d
new file mode 100644
index 0000000..abff0e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_17.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_17
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d
new file mode 100644
index 0000000..b73a284
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_18.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d
new file mode 100644
index 0000000..437c0bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_19.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d
new file mode 100644
index 0000000..eeaff5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_20.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d
new file mode 100644
index 0000000..3c6e95d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_3.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_3
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v3, dot.junit.opcodes.sget_char.d.T_sget_char_3.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d
new file mode 100644
index 0000000..9aeb10d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_4.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_4
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_4.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.dfh
new file mode 100644
index 0000000..42e44bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_char/d/T_sget_char_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_char/d/T_sget_char_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 15a34188
+    88 41 A3 15 
+// parsed: offset 12, len 20: signature           : 7979...9945
+    79 79 0B 7C 86 0C D4 6D A0 83 40 1C 4E AF AA 03 59 84 99 45 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "C"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_char_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "C"
+//     return_type_idx: 0 (0x000000) "C"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_char_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_char.d.T_sget_char_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_char.d.T_sget_char_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-char v1, Ldot/junit/opcodes/sget_char/d/T_sget_char_4;.i1:C // field@0000
+//@mod            65 01 00 00 
+            65 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 63 68 61 72 2F 64 2F 54 5F 73 67 65 74 5F 63 68 61 72 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_sget_char_4.java"
+    12 54 5F 73 67 65 74 5F 63 68 61 72 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    // parsed: offset 406, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d
new file mode 100644
index 0000000..fe1c7ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_5.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_5
+.super java/lang/Object
+
+.field public i1 C
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 77
+       iput-char v2, v3, dot.junit.opcodes.sget_char.d.T_sget_char_5.i1 C
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_5.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.java
new file mode 100644
index 0000000..00fb8ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_5 {
+
+    public char i1 = 77;
+    public char run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d
new file mode 100644
index 0000000..f984ada
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_6.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.TestStubs.TestStubField C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.java
new file mode 100644
index 0000000..7fc0f38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_6 {
+    public char run() {
+        return ' ';
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d
new file mode 100644
index 0000000..d7b5e35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_7.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_7no_class.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.java
new file mode 100644
index 0000000..616d9f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_7 {
+    public char run() {
+        return ' ';
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d
new file mode 100644
index 0000000..89ac2c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_8.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_8.i1N C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.java
new file mode 100644
index 0000000..78e63e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_8 {
+    public char run() {
+        return ' ';
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d
new file mode 100644
index 0000000..cbb4a54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_char.d.StubInitError
+.super java/lang/Object
+
+.field public static value C
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sget_char.d.StubInitError.value C
+       return-void
+.end method
+
+
+.source T_sget_char_9.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.StubInitError.value C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.java
new file mode 100644
index 0000000..bc84d1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_9 {
+    
+    public char run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/TestStubs.java
new file mode 100644
index 0000000..68b9ec7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object;
+
+public class TestStubs {
+    // used by testVFE4
+    private static Object TestStubField = null;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/Test_sget_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/Test_sget_object.java
new file mode 100644
index 0000000..88aa4cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/Test_sget_object.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_object.d.T_sget_object_1;
+import dot.junit.opcodes.sget_object.d.T_sget_object_11;
+import dot.junit.opcodes.sget_object.d.T_sget_object_12;
+import dot.junit.opcodes.sget_object.d.T_sget_object_13;
+import dot.junit.opcodes.sget_object.d.T_sget_object_21;
+import dot.junit.opcodes.sget_object.d.T_sget_object_5;
+import dot.junit.opcodes.sget_object.d.T_sget_object_6;
+import dot.junit.opcodes.sget_object.d.T_sget_object_7;
+import dot.junit.opcodes.sget_object.d.T_sget_object_8;
+import dot.junit.opcodes.sget_object.d.T_sget_object_9;
+
+public class Test_sget_object extends DxTestCase {
+
+    /**
+     * @title get object from static field
+     */
+    public void testN1() {
+        T_sget_object_1 t = new T_sget_object_1();
+        assertEquals(null, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_1
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_11
+        T_sget_object_11 t = new T_sget_object_11();
+        assertEquals(null, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_object_5 t = new T_sget_object_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_object_9 t = new T_sget_object_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read object from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_object_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_6
+        //@uses dot.junit.opcodes.sget_object.TestStubs
+        try {
+            new T_sget_object_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_object_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_object_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_12
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_1
+        try {
+            new T_sget_object_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget_object shall not work for short fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title only field of different type exists)
+     */
+    public void testVFE15() {
+        try {
+            new T_sget_object_21().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d
new file mode 100644
index 0000000..e77f532
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_1.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_1
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+.field protected static p1 Ljava/lang/Object;
+.field private static pvt1 Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 0
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_1.i1 Ljava/lang/Object;
+
+       const v0, 0
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_1.p1 Ljava/lang/Object;
+
+       const v0, 0
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_1.pvt1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_1.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.java
new file mode 100644
index 0000000..bcfe83b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_1 {
+    public static Object i1 = null;
+    protected static Object p1 = null;
+    private static Object pvt1 = null;
+    
+    public Object run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d
new file mode 100644
index 0000000..54e497c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_11.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_11
+.super dot/junit/opcodes/sget_object/d/T_sget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_object/d/T_sget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_1.p1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.java
new file mode 100644
index 0000000..9b8ce6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_11 extends T_sget_object_1 {
+
+    public Object run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d
new file mode 100644
index 0000000..b73c407
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_12.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_12
+.super dot/junit/opcodes/sget_object/d/T_sget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_object/d/T_sget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_1.pvt1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.java
new file mode 100644
index 0000000..0978a26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_12 {
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d
new file mode 100644
index 0000000..37a8cb5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_13.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_13.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.java
new file mode 100644
index 0000000..7fe275e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d
new file mode 100644
index 0000000..1455ebd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_14.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_14
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_14.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d
new file mode 100644
index 0000000..0634476
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_15.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_15
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d
new file mode 100644
index 0000000..42db7a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_16.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d
new file mode 100644
index 0000000..0a3ba48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_17.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_17
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d
new file mode 100644
index 0000000..ca498f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_18.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d
new file mode 100644
index 0000000..dfcad9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_19.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d
new file mode 100644
index 0000000..89e7bfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_20.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d
new file mode 100644
index 0000000..ddb0713
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_21.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_21
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 1
+       new-instance v0, java/lang/Object
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_21.i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_21.i1 Ljava/lang/String;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.java
new file mode 100644
index 0000000..0343390
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_21 {
+    public String run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d
new file mode 100644
index 0000000..498a01a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_3.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_3
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v3, dot.junit.opcodes.sget_object.d.T_sget_object_3.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d
new file mode 100644
index 0000000..d00c4a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_4.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_4
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_4.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.dfh
new file mode 100644
index 0000000..1c40c8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_object/d/T_sget_object_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_object/d/T_sget_object_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a1514422
+    22 44 51 A1 
+// parsed: offset 12, len 20: signature           : b308...2562
+    B3 08 01 4F 75 89 6C 79 7C 97 5C 84 37 60 65 F6 AF 62 25 62 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_object_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "i1"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "run"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 156, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 1 (0x000001) "Ljava/lang/Object;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 00 00 00 00 
+// parsed: offset 168, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_object_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 408 (0x000198)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 98 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_object.d.T_sget_object_4.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_object.d.T_sget_object_4.run"
+    // parsed: offset 268, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: sget-object v1, Ldot/junit/opcodes/sget_object/d/T_sget_object_4;.i1:Ljava/lang/Object; // field@0000
+//@mod            62 01 00 00 
+            62 01 00 01 
+        // parsed: offset 288, len 2: |0002: return-object v1
+            11 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 51: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 73 67 65 74 5F 6F 62 6A 65 63 74 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 22: TYPE_STRING_DATA_ITEM [4] "T_sget_object_4.java"
+    14 54 5F 73 67 65 74 5F 6F 62 6A 65 63 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 403, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    // parsed: offset 408, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 409, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 410, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 411, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 412, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 413, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 144 (0x000090)
+        02 00 00 00 03 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 156 (0x00009c)
+        03 00 00 00 02 00 00 00 9C 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 180 (0x0000b4)
+        04 00 00 00 01 00 00 00 B4 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 20 00 00 01 00 00 00 98 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d
new file mode 100644
index 0000000..35687ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_5.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_5
+.super java/lang/Object
+
+.field public i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 0
+       iput-object v2, v3, dot.junit.opcodes.sget_object.d.T_sget_object_5.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_5.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.java
new file mode 100644
index 0000000..116ae52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_5 {
+
+    public Object i1 = null;
+    public Object run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d
new file mode 100644
index 0000000..03483da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_6.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.java
new file mode 100644
index 0000000..84714b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_6 {
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d
new file mode 100644
index 0000000..eb172eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_7.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_7no_class.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.java
new file mode 100644
index 0000000..56fbd35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_7 {
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d
new file mode 100644
index 0000000..841a454
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_8.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_8.i1N Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.java
new file mode 100644
index 0000000..87afe69
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_8 {
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d
new file mode 100644
index 0000000..efd184b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_object.d.StubInitError
+.super java/lang/Object
+
+.field public static value Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 0
+       sput-object v1, dot.junit.opcodes.sget_object.d.StubInitError.value Ljava/lang/Object;
+       return-void
+.end method
+
+
+.source T_sget_object_9.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.StubInitError.value Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.java
new file mode 100644
index 0000000..4fbae55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_9 {
+    
+    public Object run(){
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/TestStubs.java
new file mode 100644
index 0000000..3e5605b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short;
+
+public class TestStubs {
+    // used by testVFE4
+    private static short TestStubField = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/Test_sget_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/Test_sget_short.java
new file mode 100644
index 0000000..b38ef29
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/Test_sget_short.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_short.d.T_sget_short_1;
+import dot.junit.opcodes.sget_short.d.T_sget_short_11;
+import dot.junit.opcodes.sget_short.d.T_sget_short_12;
+import dot.junit.opcodes.sget_short.d.T_sget_short_13;
+import dot.junit.opcodes.sget_short.d.T_sget_short_5;
+import dot.junit.opcodes.sget_short.d.T_sget_short_6;
+import dot.junit.opcodes.sget_short.d.T_sget_short_7;
+import dot.junit.opcodes.sget_short.d.T_sget_short_8;
+import dot.junit.opcodes.sget_short.d.T_sget_short_9;
+
+public class Test_sget_short extends DxTestCase {
+
+    /**
+     * @title get short from static field
+     */
+    public void testN1() {
+        T_sget_short_1 t = new T_sget_short_1();
+        assertEquals(32000, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_1
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_11
+        T_sget_short_11 t = new T_sget_short_11();
+        assertEquals(32000, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_short_5 t = new T_sget_short_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_short_9 t = new T_sget_short_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read short from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_short_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_6
+        //@uses dot.junit.opcodes.sget_short.TestStubs
+        try {
+            new T_sget_short_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_short_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_short_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_12
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_1
+        try {
+            new T_sget_short_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget_short shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d
new file mode 100644
index 0000000..777253e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_1.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_1
+.super java/lang/Object
+
+.field public static i1 S
+.field protected static p1 S
+.field private static pvt1 S
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 32000
+       sput-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_1.i1 S
+
+       const v0, 32000
+       sput-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_1.p1 S
+
+       const v0, 32000
+       sput-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_1.pvt1 S
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_1.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.java
new file mode 100644
index 0000000..5cb80f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_1 {
+    public static short i1 = 32000;
+    protected static short p1 = 32000;
+    private static short pvt1 = 32000;
+    
+    public short run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d
new file mode 100644
index 0000000..d0f87a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_11.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_11
+.super dot/junit/opcodes/sget_short/d/T_sget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_short/d/T_sget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_1.p1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.java
new file mode 100644
index 0000000..790a0de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_11 extends T_sget_short_1 {
+
+    public short run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d
new file mode 100644
index 0000000..7a0a307
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_12.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_12
+.super dot/junit/opcodes/sget_short/d/T_sget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_short/d/T_sget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_1.pvt1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.java
new file mode 100644
index 0000000..ea41518
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_12 {
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d
new file mode 100644
index 0000000..b37df82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_13.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_13.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.java
new file mode 100644
index 0000000..4bc3105
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_13 {
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d
new file mode 100644
index 0000000..3d79cd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_14.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d
new file mode 100644
index 0000000..d8751e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_15.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_15
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d
new file mode 100644
index 0000000..48f416c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_16.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d
new file mode 100644
index 0000000..1cc7398
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_17.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_17
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d
new file mode 100644
index 0000000..7f3ff6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_18.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d
new file mode 100644
index 0000000..b9841ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_19.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d
new file mode 100644
index 0000000..1ae3803
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_20.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d
new file mode 100644
index 0000000..9dcbd24
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_3.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_3
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v3, dot.junit.opcodes.sget_short.d.T_sget_short_3.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d
new file mode 100644
index 0000000..ab070e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_4.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_4
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_4.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.dfh
new file mode 100644
index 0000000..c19a74a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_short/d/T_sget_short_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_short/d/T_sget_short_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4d504536
+    36 45 50 4D 
+// parsed: offset 12, len 20: signature           : d415...9794
+    D4 15 7B CD 4D D8 21 C3 FF 53 0E DE B1 2F 9E 3D 0D 47 97 94 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "Ljava/lang/Object;"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "S"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 376 (0x000178) "T_sget_short_4.java"
+    78 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "i1"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 404 (0x000194) "run"
+    94 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "S"
+//     return_type_idx: 2 (0x000002) "S"
+//     parameters_off: 0 (0x000000)
+    03 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 6 (0x000006) "i1"
+    00 00 02 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_short_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 409 (0x000199)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 99 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_short.d.T_sget_short_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_short.d.T_sget_short_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-short v1, Ldot/junit/opcodes/sget_short/d/T_sget_short_4;.i1:S // field@0000
+//@mod            66 01 00 00 
+            66 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 73 67 65 74 5F 73 68 6F 72 74 5F 34 3B 00 
+// parsed: offset 353, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 373, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 376, len 21: TYPE_STRING_DATA_ITEM [4] "T_sget_short_4.java"
+    13 54 5F 73 67 65 74 5F 73 68 6F 72 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 404, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    // parsed: offset 409, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 410, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 412, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 413, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 414, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 416, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 419, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 422, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 423, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 425, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 409 (0x000199)
+        00 20 00 00 01 00 00 00 99 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d
new file mode 100644
index 0000000..b7c451a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_5.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_5
+.super java/lang/Object
+
+.field public i1 S
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 77
+       iput-short v2, v3, dot.junit.opcodes.sget_short.d.T_sget_short_5.i1 S
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_5.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.java
new file mode 100644
index 0000000..c1dda0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_5 {
+
+    public short i1 = 32000;
+    public short run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d
new file mode 100644
index 0000000..ce1ec34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_6.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.TestStubs.TestStubField S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.java
new file mode 100644
index 0000000..1499a3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_6 {
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d
new file mode 100644
index 0000000..2c82957
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_7.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_7no_class.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.java
new file mode 100644
index 0000000..823e90d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_7 {
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d
new file mode 100644
index 0000000..645aa56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_8.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_8.i1N S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.java
new file mode 100644
index 0000000..2c3ec32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_8 {
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d
new file mode 100644
index 0000000..85d6755
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_short.d.StubInitError
+.super java/lang/Object
+
+.field public static value S
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sget_short.d.StubInitError.value S
+       return-void
+.end method
+
+
+.source T_sget_short_9.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.StubInitError.value S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.java
new file mode 100644
index 0000000..512ef4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_9 {
+    
+    public short run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/TestStubs.java
new file mode 100644
index 0000000..3538a38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide;
+
+public class TestStubs {
+    // used by testVFE4
+    private static long TestStubField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/Test_sget_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/Test_sget_wide.java
new file mode 100644
index 0000000..8ecbeb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/Test_sget_wide.java
@@ -0,0 +1,280 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_1;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_11;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_12;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_13;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_2;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_5;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_6;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_7;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_8;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_9;
+
+public class Test_sget_wide extends DxTestCase {
+
+    /**
+     * @title type - long
+     */
+    public void testN1() {
+        T_sget_wide_1 t = new T_sget_wide_1();
+        assertEquals(12345679890123l, t.run());
+    }
+
+    /**
+     * @title type - double
+     */
+    public void testN2() {
+        T_sget_wide_2 t = new T_sget_wide_2();
+        assertEquals(123.0, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_1
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_11
+        T_sget_wide_11 t = new T_sget_wide_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_wide_5 t = new T_sget_wide_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+
+        T_sget_wide_9 t = new T_sget_wide_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read long from integer field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_wide_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_6
+        //@uses dot.junit.opcodes.sget_wide.TestStubs
+        try {
+            new T_sget_wide_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_wide_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_wide_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_12
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_1
+        try {
+            new T_sget_wide_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget-wide shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for float fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for int fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d
new file mode 100644
index 0000000..ffd5cb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_1.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_1
+.super java/lang/Object
+
+.field public static i1 J
+.field protected static p1 J
+.field private static pvt1 J
+
+.method static <clinit>()V
+.limit regs 2
+       const-wide v0, 12345679890123
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.i1 J
+
+       const-wide v0, 10
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.p1 J
+
+       const-wide v0, 20
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.pvt1 J
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.java
new file mode 100644
index 0000000..e995709
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_1 {
+    public static long i1 = 12345679890123l;
+    protected static long p1 = 10;
+    private static long pvt1 = 20;
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d
new file mode 100644
index 0000000..3485b03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_11.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_11
+.super dot/junit/opcodes/sget_wide/d/T_sget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_wide/d/T_sget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.p1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.java
new file mode 100644
index 0000000..41f07c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_11 extends T_sget_wide_1 {
+
+    public long run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d
new file mode 100644
index 0000000..36c4678
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_12.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_12
+.super dot/junit/opcodes/sget_wide/d/T_sget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_wide/d/T_sget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.pvt1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.java
new file mode 100644
index 0000000..9dc55c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_12 {
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d
new file mode 100644
index 0000000..308bdd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_13.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_13
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_13.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.java
new file mode 100644
index 0000000..21fc969
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d
new file mode 100644
index 0000000..6e32d54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_14.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d
new file mode 100644
index 0000000..685bf22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_15.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d
new file mode 100644
index 0000000..5548cdc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_16.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_16
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d
new file mode 100644
index 0000000..961c845
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_17.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d
new file mode 100644
index 0000000..8dba06c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_18.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_18
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d
new file mode 100644
index 0000000..e8d5722
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_19.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_19
+.super java/lang/Object
+
+.field public static i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_19.i1 F
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d
new file mode 100644
index 0000000..4e12946
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_2.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_2
+.super java/lang/Object
+
+.field public static val D
+
+.method static <clinit>()V
+.limit regs 2
+       const-wide v0, 123.0
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_2.val D
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 4
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_2.val D
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.java
new file mode 100644
index 0000000..ea40542
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_2 {
+
+    public static double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d
new file mode 100644
index 0000000..1861a25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_20.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_20
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_20.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d
new file mode 100644
index 0000000..e672291
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_3.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_3
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v3, dot.junit.opcodes.sget_wide.d.T_sget_wide_3.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d
new file mode 100644
index 0000000..9924345
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_4.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_4
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_4.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dfh
new file mode 100644
index 0000000..aa8661b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7da34431
+    31 44 A3 7D 
+// parsed: offset 12, len 20: signature           : 3c53...7396
+    3C 53 BF B1 B1 75 57 C6 91 52 F2 94 23 6C C3 BF 3B B4 73 96 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "J"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_wide_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "J"
+//     return_type_idx: 0 (0x000000) "J"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_wide_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_wide.d.T_sget_wide_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_wide.d.T_sget_wide_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-wide v1, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;.i1:J // field@0000
+//@mod            61 01 00 00 
+            61 01 00 01
+        // parsed: offset 292, len 2: |0002: return-wide v1
+            10 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 77 69 64 65 2F 64 2F 54 5F 73 67 65 74 5F 77 69 64 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_sget_wide_4.java"
+    12 54 5F 73 67 65 74 5F 77 69 64 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    // parsed: offset 406, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d
new file mode 100644
index 0000000..e323dc0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_5.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_5
+.super java/lang/Object
+
+.field public i1 J
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const-wide v0, 5
+       iput-wide v0, v3, dot.junit.opcodes.sget_wide.d.T_sget_wide_5.i1 J
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_5.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.java
new file mode 100644
index 0000000..6021edd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_5 {
+
+    public long i1 = 5;
+    public long run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d
new file mode 100644
index 0000000..48e59f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_6.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.TestStubs.TestStubField J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.java
new file mode 100644
index 0000000..f2744cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_6 {
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d
new file mode 100644
index 0000000..b34ddd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_7.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_7no_class.i1 J
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.java
new file mode 100644
index 0000000..e97e416
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_7 {
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d
new file mode 100644
index 0000000..d53c7dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_8.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_8.i1N J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.java
new file mode 100644
index 0000000..95b2dbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_8 {
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d
new file mode 100644
index 0000000..e223578
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_wide.d.StubInitError
+.super java/lang/Object
+
+.field public static value J
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.StubInitError.value J
+       return-void
+.end method
+
+
+.source T_sget_wide_9.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.StubInitError.value J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.java
new file mode 100644
index 0000000..a19f781
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_9 {
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/Test_shl_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/Test_shl_int.java
new file mode 100644
index 0000000..5b5d6ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/Test_shl_int.java
@@ -0,0 +1,149 @@
+package dot.junit.opcodes.shl_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_int.d.T_shl_int_1;
+import dot.junit.opcodes.shl_int.d.T_shl_int_6;
+
+public class Test_shl_int extends DxTestCase {
+
+    /**
+     * @title 15 << 1
+     */
+    public void testN1() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(30, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 << 2
+     */
+    public void testN2() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(132, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 << 1
+     */
+    public void testN3() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(-30, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0x80000000, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(66, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation float parameters makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_int_6 t = new T_shl_int_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d
new file mode 100644
index 0000000..a9e9ede
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d
@@ -0,0 +1,18 @@
+.source T_shl_int_1.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.java
new file mode 100644
index 0000000..4480d75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int.d;
+
+public class T_shl_int_1 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d
new file mode 100644
index 0000000..f1955e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d
new file mode 100644
index 0000000..88fff38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d
@@ -0,0 +1,18 @@
+.source T_shl_int_3.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d
new file mode 100644
index 0000000..2b2fd1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d
@@ -0,0 +1,18 @@
+.source T_shl_int_4.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d
new file mode 100644
index 0000000..1ae15e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d
@@ -0,0 +1,18 @@
+.source T_shl_int_5.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d
new file mode 100644
index 0000000..1527b6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d
@@ -0,0 +1,18 @@
+.source T_shl_int_6.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shl-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.java
new file mode 100644
index 0000000..bb6806c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int.d;
+
+public class T_shl_int_6 {
+
+    public int run(float a, float b) {
+        return (int)a << (int)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/Test_shl_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/Test_shl_int_2addr.java
new file mode 100644
index 0000000..7774bbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/Test_shl_int_2addr.java
@@ -0,0 +1,149 @@
+package dot.junit.opcodes.shl_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_1;
+import dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_6;
+
+public class Test_shl_int_2addr extends DxTestCase {
+
+    /**
+     * @title 15 << 1
+     */
+    public void testN1() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(30, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 << 2
+     */
+    public void testN2() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(132, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 << 1
+     */
+    public void testN3() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(-30, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0x80000000, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(66, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation for float parameters makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_int_2addr_6 t = new T_shl_int_2addr_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d
new file mode 100644
index 0000000..380c8c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_1.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.java
new file mode 100644
index 0000000..69d8de4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int_2addr.d;
+
+public class T_shl_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d
new file mode 100644
index 0000000..bb92f80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_2.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int/2addr v7, v8
+       return v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d
new file mode 100644
index 0000000..7785e26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_3.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d
new file mode 100644
index 0000000..3860a02
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_4.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d
new file mode 100644
index 0000000..affe561
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_5.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d
new file mode 100644
index 0000000..2299e9c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_6.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shl-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.java
new file mode 100644
index 0000000..f82be9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int_2addr.d;
+
+public class T_shl_int_2addr_6 {
+
+    public int run(float a, float b) {
+        return (int)a << (int)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/Test_shl_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/Test_shl_int_lit8.java
new file mode 100644
index 0000000..186ddba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/Test_shl_int_lit8.java
@@ -0,0 +1,153 @@
+package dot.junit.opcodes.shl_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_1;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_2;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_3;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_4;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_5;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_6;
+
+public class Test_shl_int_lit8 extends DxTestCase {
+
+    /**
+     * @title 15 << 1
+     */
+    public void testN1() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(30, t.run(15));
+    }
+
+    /**
+     * @title 33 << 2
+     */
+    public void testN2() {
+        T_shl_int_lit8_2 t = new T_shl_int_lit8_2();
+        assertEquals(132, t.run(33));
+    }
+
+    /**
+     * @title -15 << 1
+     */
+    public void testN3() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(-30, t.run(-15));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_int_lit8_3 t = new T_shl_int_lit8_3();
+        assertEquals(0x80000000, t.run(1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shl_int_lit8_4 t = new T_shl_int_lit8_4();
+        assertEquals(66, t.run(33));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_int_lit8_6 t = new T_shl_int_lit8_6();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_int_lit8_3 t = new T_shl_int_lit8_3();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shl_int_lit8_5 t = new T_shl_int_lit8_5();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d
new file mode 100644
index 0000000..8230b0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_1.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.java
new file mode 100644
index 0000000..31b0543
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 1;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d
new file mode 100644
index 0000000..ebcef08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_10.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       shl-int/lit8 v0, v5, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d
new file mode 100644
index 0000000..ab5d308
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_2.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.java
new file mode 100644
index 0000000..14f04e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 2;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d
new file mode 100644
index 0000000..b7c3c3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_3.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.java
new file mode 100644
index 0000000..7b76307
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d
new file mode 100644
index 0000000..3416035
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_4.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 33
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.java
new file mode 100644
index 0000000..6b80a22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_4 {
+    
+    public int run(int a) {
+        int b = 33;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d
new file mode 100644
index 0000000..bb0ebbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_5.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.java
new file mode 100644
index 0000000..f170338
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = 0;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d
new file mode 100644
index 0000000..3e2b9d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_6.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.java
new file mode 100644
index 0000000..e41def3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_6 {
+    
+    public int run(float a) {
+        int b = 1;
+        return (int)a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d
new file mode 100644
index 0000000..c2a0301
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_7.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v8, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d
new file mode 100644
index 0000000..49062a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_8.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       shl-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d
new file mode 100644
index 0000000..9d91c49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_9.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       shl-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/Test_shl_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/Test_shl_long.java
new file mode 100644
index 0000000..d22ba92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/Test_shl_long.java
@@ -0,0 +1,163 @@
+package dot.junit.opcodes.shl_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_long.d.T_shl_long_1;
+import dot.junit.opcodes.shl_long.d.T_shl_long_7;
+
+public class Test_shl_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 5000000000l, 3
+     */
+    public void testN1() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(40000000000l, t.run(5000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 5000000000l, 1
+     */
+    public void testN2() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(10000000000l, t.run(5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -5000000000l, 1
+     */
+    public void testN3() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(-10000000000l, t.run(-5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0x8000000000000000l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(130l, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_long_7 t = new T_shl_long_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0xfffffffe, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference & int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d
new file mode 100644
index 0000000..0293191
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d
@@ -0,0 +1,18 @@
+.source T_shl_long_1.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.java
new file mode 100644
index 0000000..27e13ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long.d;
+
+public class T_shl_long_1 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d
new file mode 100644
index 0000000..1a5fe79
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long v0, v8, v11
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d
new file mode 100644
index 0000000..0f33164
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d
@@ -0,0 +1,18 @@
+.source T_shl_long_3.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shl-long v0, v7, v9
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d
new file mode 100644
index 0000000..4392e2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d
@@ -0,0 +1,18 @@
+.source T_shl_long_4.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shl-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d
new file mode 100644
index 0000000..29ad593
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d
@@ -0,0 +1,18 @@
+.source T_shl_long_5.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shl-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d
new file mode 100644
index 0000000..105c0e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d
@@ -0,0 +1,18 @@
+.source T_shl_long_6.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long v0, v7, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d
new file mode 100644
index 0000000..ed9faf0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d
@@ -0,0 +1,18 @@
+.source T_shl_long_7.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shl-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.java
new file mode 100644
index 0000000..ecc3e1f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long.d;
+
+public class T_shl_long_7 {
+
+    public long run(double a, int b) {
+        return (long)a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/Test_shl_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/Test_shl_long_2addr.java
new file mode 100644
index 0000000..1113905
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/Test_shl_long_2addr.java
@@ -0,0 +1,163 @@
+package dot.junit.opcodes.shl_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_1;
+import dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_7;
+
+public class Test_shl_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 5000000000l, 3
+     */
+    public void testN1() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(40000000000l, t.run(5000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 5000000000l, 1
+     */
+    public void testN2() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(10000000000l, t.run(5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -5000000000l, 1
+     */
+    public void testN3() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(-10000000000l, t.run(-5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0x8000000000000000l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(130l, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_long_2addr_7 t = new T_shl_long_2addr_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0xfffffffe, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d
new file mode 100644
index 0000000..b2e3bb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_1.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.java
new file mode 100644
index 0000000..569531d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long_2addr.d;
+
+public class T_shl_long_2addr_1 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d
new file mode 100644
index 0000000..fd4598a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_2.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long/2addr v8, v11
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d
new file mode 100644
index 0000000..41c08f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_3.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shl-long/2addr v7, v9
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d
new file mode 100644
index 0000000..4c69423
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_4.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shl-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d
new file mode 100644
index 0000000..bb9b45b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_5.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shl-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d
new file mode 100644
index 0000000..50738c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_6.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long/2addr v7, v10
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d
new file mode 100644
index 0000000..42b0717
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_7.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shl-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.java
new file mode 100644
index 0000000..f6978ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long_2addr.d;
+
+public class T_shl_long_2addr_7 {
+
+    public long run(double a, int b) {
+        return (long)a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/Test_shr_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/Test_shr_int.java
new file mode 100644
index 0000000..d81d7c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/Test_shr_int.java
@@ -0,0 +1,150 @@
+package dot.junit.opcodes.shr_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_int.d.T_shr_int_1;
+import dot.junit.opcodes.shr_int.d.T_shr_int_6;
+
+public class Test_shr_int extends DxTestCase {
+
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(-8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float parameters makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_int_6 t = new T_shr_int_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d
new file mode 100644
index 0000000..9eaa104
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d
@@ -0,0 +1,18 @@
+.source T_shr_int_1.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.java
new file mode 100644
index 0000000..68a7062
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int.d;
+
+public class T_shr_int_1 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d
new file mode 100644
index 0000000..8800018
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d
new file mode 100644
index 0000000..1f0c528
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d
@@ -0,0 +1,18 @@
+.source T_shr_int_3.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d
new file mode 100644
index 0000000..eede586
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d
@@ -0,0 +1,18 @@
+.source T_shr_int_4.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d
new file mode 100644
index 0000000..fe57998
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d
@@ -0,0 +1,18 @@
+.source T_shr_int_5.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d
new file mode 100644
index 0000000..0323c5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d
@@ -0,0 +1,18 @@
+.source T_shr_int_6.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shr-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.java
new file mode 100644
index 0000000..86804e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int.d;
+
+public class T_shr_int_6 {
+
+    public int run(float a, float b) {
+        return (int)a >> (int)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/Test_shr_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/Test_shr_int_2addr.java
new file mode 100644
index 0000000..b52cafe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/Test_shr_int_2addr.java
@@ -0,0 +1,150 @@
+package dot.junit.opcodes.shr_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_1;
+import dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_6;
+
+public class Test_shr_int_2addr extends DxTestCase {
+
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(-8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_int_2addr_6 t = new T_shr_int_2addr_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d
new file mode 100644
index 0000000..28765b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_1.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.java
new file mode 100644
index 0000000..e00a03d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int_2addr.d;
+
+public class T_shr_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d
new file mode 100644
index 0000000..a7bc7ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_2.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d
new file mode 100644
index 0000000..0a6ea58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_3.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d
new file mode 100644
index 0000000..3d4d094
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_4.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d
new file mode 100644
index 0000000..4b35e2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_5.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d
new file mode 100644
index 0000000..b563cc0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_6.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shr-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.java
new file mode 100644
index 0000000..f9e057f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int_2addr.d;
+
+public class T_shr_int_2addr_6 {
+
+    public int run(float a, float b) {
+        return (int)a >> (int)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/Test_shr_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/Test_shr_int_lit8.java
new file mode 100644
index 0000000..af03cff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/Test_shr_int_lit8.java
@@ -0,0 +1,152 @@
+package dot.junit.opcodes.shr_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_1;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_2;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_3;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_4;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_5;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_6;
+
+public class Test_shr_int_lit8 extends DxTestCase {
+
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(7, t.run(15));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_shr_int_lit8_2 t = new T_shr_int_lit8_2();
+        assertEquals(8, t.run(33));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(-8, t.run(-15));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_int_lit8_3 t = new T_shr_int_lit8_3();
+        assertEquals(0, t.run(1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shr_int_lit8_4 t = new T_shr_int_lit8_4();
+        assertEquals(16, t.run(33));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_int_lit8_6 t = new T_shr_int_lit8_6();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_int_lit8_3 t = new T_shr_int_lit8_3();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shr_int_lit8_5 t = new T_shr_int_lit8_5();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d
new file mode 100644
index 0000000..d34130f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_1.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.java
new file mode 100644
index 0000000..b784123
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 1;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d
new file mode 100644
index 0000000..c94aa21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_10.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d
new file mode 100644
index 0000000..1a3b1bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_2.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.java
new file mode 100644
index 0000000..1ab910d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 2;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d
new file mode 100644
index 0000000..002cadf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_3.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.java
new file mode 100644
index 0000000..5e85115
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d
new file mode 100644
index 0000000..3b9b507
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_4.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 33
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.java
new file mode 100644
index 0000000..cc49861
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_4 {
+    
+    public int run(int a) {
+        int b = 33;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d
new file mode 100644
index 0000000..871040a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_5.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.java
new file mode 100644
index 0000000..b27c64b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = 0;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d
new file mode 100644
index 0000000..761a30e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_6.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.java
new file mode 100644
index 0000000..a24bcb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_6 {
+    
+    public int run(float a) {
+        int b = 1;
+        return (int)a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d
new file mode 100644
index 0000000..34559e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_7.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v8, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d
new file mode 100644
index 0000000..d157daf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_8.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d
new file mode 100644
index 0000000..ed24326
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_9.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/Test_shr_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/Test_shr_long.java
new file mode 100644
index 0000000..66bc8b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/Test_shr_long.java
@@ -0,0 +1,162 @@
+package dot.junit.opcodes.shr_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_long.d.T_shr_long_1;
+import dot.junit.opcodes.shr_long.d.T_shr_long_7;
+
+public class Test_shr_long extends DxTestCase {
+
+    /**
+     * @title Arguments =  40000000000l, 3
+     */
+    public void testN1() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -40000000000l, 1
+     */
+    public void testN3() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(-20000000000l, t.run(-40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(32, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and int makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_long_7 t = new T_shr_long_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0xc000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d
new file mode 100644
index 0000000..08c82f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d
@@ -0,0 +1,18 @@
+.source T_shr_long_1.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.java
new file mode 100644
index 0000000..e15d414
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long.d;
+
+public class T_shr_long_1 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d
new file mode 100644
index 0000000..a87004a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long v0, v8, v11
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d
new file mode 100644
index 0000000..9c78f73
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d
@@ -0,0 +1,18 @@
+.source T_shr_long_3.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shr-long v0, v7, v9
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d
new file mode 100644
index 0000000..e6691cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d
@@ -0,0 +1,18 @@
+.source T_shr_long_4.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shr-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d
new file mode 100644
index 0000000..f5e4cb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d
@@ -0,0 +1,18 @@
+.source T_shr_long_5.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shr-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d
new file mode 100644
index 0000000..427d1c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d
@@ -0,0 +1,18 @@
+.source T_shr_long_6.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long v0, v7, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d
new file mode 100644
index 0000000..ad83dc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d
@@ -0,0 +1,18 @@
+.source T_shr_long_7.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shr-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.java
new file mode 100644
index 0000000..ca42ea9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long.d;
+
+public class T_shr_long_7 {
+
+    public long run(double a, int b) {
+        return (long)a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/Test_shr_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/Test_shr_long_2addr.java
new file mode 100644
index 0000000..22c4530
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/Test_shr_long_2addr.java
@@ -0,0 +1,163 @@
+package dot.junit.opcodes.shr_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_1;
+import dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_7;
+
+public class Test_shr_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 40000000000l, 3
+     */
+    public void testN1() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -40000000000l, 1
+     */
+    public void testN3() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(-20000000000l, t.run(-40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(32, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and int makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_long_2addr_7 t = new T_shr_long_2addr_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0xc000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d
new file mode 100644
index 0000000..0e9c36b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_1.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.java
new file mode 100644
index 0000000..1c5691e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long_2addr.d;
+
+public class T_shr_long_2addr_1 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d
new file mode 100644
index 0000000..a0ebe17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_2.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long/2addr v8, v11
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d
new file mode 100644
index 0000000..c07af2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_3.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shr-long/2addr v7, v9
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d
new file mode 100644
index 0000000..9db034e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_4.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shr-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d
new file mode 100644
index 0000000..f1045cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_5.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shr-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d
new file mode 100644
index 0000000..1326e76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_6.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long/2addr v7, v10
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d
new file mode 100644
index 0000000..3b3db0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_7.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shr-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.java
new file mode 100644
index 0000000..ed3e1e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long_2addr.d;
+
+public class T_shr_long_2addr_7 {
+
+    public long run(double a, int b) {
+        return (long)a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/Test_sparse_switch.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/Test_sparse_switch.java
new file mode 100644
index 0000000..66f5c39
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/Test_sparse_switch.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sparse_switch.d.T_sparse_switch_1;
+import dot.junit.opcodes.sparse_switch.d.T_sparse_switch_2
+;
+
+public class Test_sparse_switch extends DxTestCase {
+
+    /**
+     * @title try different values
+     */
+    public void testN1() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(2, t.run(-1));
+
+        assertEquals(-1, t.run(9));
+        assertEquals(20, t.run(10));
+        assertEquals(-1, t.run(11));
+
+        assertEquals(-1, t.run(14));
+        assertEquals(20, t.run(15));
+        assertEquals(-1, t.run(16));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN2() {
+        try {
+            T_sparse_switch_2 t = new T_sparse_switch_2();
+            t.run(-1.23f);
+        } catch(Throwable t) {
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(-1, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8
+     * @title offset to table shall be inside method
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8
+     * @title pairs shall be sorted in ascending order
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8 
+     * @title number of entries in jump table
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B22
+     * @title sparse-switch-data pseudo-instructions must not be reachable by control flow 
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A8
+     * @title table has wrong ident code 
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d
new file mode 100644
index 0000000..bd3aaa5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_1.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.java
new file mode 100644
index 0000000..05d0ba9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_1 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d
new file mode 100644
index 0000000..5853adb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_11.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dfh
new file mode 100644
index 0000000..81eac01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : cbc95483
+    83 54 C9 CB 
+// parsed: offset 12, len 20: signature           : 4fcf...5763
+    4F CF BE 7C 4E 38 25 A2 FB 35 7F 9B C3 DF 90 D5 67 72 57 63 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 417 (0x0001a1) "Ljava/lang/Object;"
+    A1 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 437 (0x0001b5) "T_sparse_switch_11.java"
+    B5 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 462 (0x0001ce) "V"
+    CE 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 465 (0x0001d1) "run"
+    D1 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 470 (0x0001d6)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 03 00 FF FF FF FF 0F 00 00 00 0A 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 31 3B 00 
+// parsed: offset 417, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 437, len 25: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_11.java"
+    17 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 462, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 465, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    // parsed: offset 470, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 471, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 473, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 474, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 475, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 478, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 480, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 481, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 482, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 470 (0x0001d6)
+        00 20 00 00 01 00 00 00 D6 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d
new file mode 100644
index 0000000..feff623
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_12.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dfh
new file mode 100644
index 0000000..2d9ee69
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b034540d
+    0D 54 34 B0 
+// parsed: offset 12, len 20: signature           : 17df...83d1
+    17 DF 40 0E 7B 84 69 AA B8 A3 BF 9B 70 B0 7D 1D CF 2A 83 D1 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 417 (0x0001a1) "Ljava/lang/Object;"
+    A1 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 437 (0x0001b5) "T_sparse_switch_12.java"
+    B5 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 462 (0x0001ce) "V"
+    CE 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 465 (0x0001d1) "run"
+    D1 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 470 (0x0001d6)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 04 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 32 3B 00 
+// parsed: offset 417, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 437, len 25: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_12.java"
+    17 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 462, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 465, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    // parsed: offset 470, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 471, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 473, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 474, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 475, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 478, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 480, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 481, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 482, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 470 (0x0001d6)
+        00 20 00 00 01 00 00 00 D6 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.java
new file mode 100644
index 0000000..c8f40c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_12 {
+
+    public void run() {
+        switch (1) {
+        case -1:
+            return;
+        case 10:
+            return;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d
new file mode 100644
index 0000000..8c7814d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_13.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_13
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+      goto Label0
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+Label0:
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d
new file mode 100644
index 0000000..074c119
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_14.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+      goto Label0
+Label0:
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dfh
new file mode 100644
index 0000000..3f17abc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7a9e539f
+    9F 53 9E 7A 
+// parsed: offset 12, len 20: signature           : 0e0e...6b5f
+    0E 0E E3 52 F8 B0 52 FC 24 7F 08 37 B9 F7 17 79 D1 74 6B 5F 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 417 (0x0001a1) "Ljava/lang/Object;"
+    A1 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 437 (0x0001b5) "T_sparse_switch_14.java"
+    B5 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 462 (0x0001ce) "V"
+    CE 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 465 (0x0001d1) "run"
+    D1 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_14.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 470 (0x0001d6)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+            28 01 
+        // parsed: offset 282, len 6: |0001: sparse-switch v4, 00000010 //  +0x0000000f
+            2C 04 0F 00 00 00 
+        // parsed: offset 288, len 6: |0004: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 294, len 2: |0007: return v4
+            0F 04 
+        // parsed: offset 296, len 6: |0008: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 302, len 2: |000b: return v4
+            0F 04 
+        // parsed: offset 304, len 6: |000c: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 310, len 2: |000f: return v4
+            0F 04 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 05 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 34 3B 00 
+// parsed: offset 417, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 437, len 25: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_14.java"
+    17 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 34 2E 6A 61 76 61 00 
+// parsed: offset 462, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 465, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    // parsed: offset 470, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 471, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 473, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 474, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 475, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 478, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 480, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 481, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 482, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 470 (0x0001d6)
+        00 20 00 00 01 00 00 00 D6 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d
new file mode 100644
index 0000000..0f8b90b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_2.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+Label3:
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.java
new file mode 100644
index 0000000..e9344d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_2 {
+
+    public int run(float i) {
+        switch ((int)i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d
new file mode 100644
index 0000000..ce82bc9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_3.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+Label3:
+       sparse-switch v5
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d
new file mode 100644
index 0000000..36f8c8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_4.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+
+Label3:
+       sparse-switch v3
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d
new file mode 100644
index 0000000..dc72c30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_5.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+
+Label3:
+       sparse-switch v3
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d
new file mode 100644
index 0000000..25e418f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_6.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+Label3:
+       sparse-switch v3
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d
new file mode 100644
index 0000000..67f3328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_7.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dfh
new file mode 100644
index 0000000..47d52d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ffcf536e
+    6E 53 CF FF 
+// parsed: offset 12, len 20: signature           : d1bd...dc70
+    D1 BD 9D 22 FC DA 04 F6 69 A9 22 1D 41 70 69 23 80 60 DC 70 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_sparse_switch_7.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 01 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 37 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_7.java"
+    16 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.java
new file mode 100644
index 0000000..d7a7a59
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_7 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d
new file mode 100644
index 0000000..ba0dae3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_8.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dfh
new file mode 100644
index 0000000..f65851b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 3b52538d
+    8D 53 52 3B 
+// parsed: offset 12, len 20: signature           : d117...b84c
+    D1 17 6B A9 92 35 B7 F5 59 7E 60 68 BB 65 20 12 A4 EB B8 4C 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_sparse_switch_8.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0C 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 38 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_8.java"
+    16 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.java
new file mode 100644
index 0000000..a7176dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_8 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d
new file mode 100644
index 0000000..2566813
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_9.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dfh
new file mode 100644
index 0000000..d5d171a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b289520e
+    0E 52 89 B2 
+// parsed: offset 12, len 20: signature           : 9f96...637f
+    9F 96 22 76 3B 40 5B 16 24 C5 DA 48 89 0B 4A 96 70 E8 63 7F 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_sparse_switch_9.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+//@mod            2C 04 10 00 00 00 
+            2C 04 10 01 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 39 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_9.java"
+    16 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/TestStubs.java
new file mode 100644
index 0000000..581e945
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput;
+
+public class TestStubs {
+    // used by testVFE9
+    static int TestStubField = 0;
+    
+    // used by testE5
+    public static final int TestStubFieldFinal = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/Test_sput.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/Test_sput.java
new file mode 100644
index 0000000..8b73bb5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/Test_sput.java
@@ -0,0 +1,330 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput.d.T_sput_1;
+import dot.junit.opcodes.sput.d.T_sput_10;
+import dot.junit.opcodes.sput.d.T_sput_11;
+import dot.junit.opcodes.sput.d.T_sput_12;
+import dot.junit.opcodes.sput.d.T_sput_13;
+import dot.junit.opcodes.sput.d.T_sput_14;
+import dot.junit.opcodes.sput.d.T_sput_15;
+import dot.junit.opcodes.sput.d.T_sput_17;
+import dot.junit.opcodes.sput.d.T_sput_19;
+import dot.junit.opcodes.sput.d.T_sput_5;
+import dot.junit.opcodes.sput.d.T_sput_7;
+import dot.junit.opcodes.sput.d.T_sput_8;
+import dot.junit.opcodes.sput.d.T_sput_9;
+
+
+public class Test_sput extends DxTestCase {
+
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_sput_1 t = new T_sput_1();
+        assertEquals(0, T_sput_1.st_i1);
+        t.run();
+        assertEquals(1000000, T_sput_1.st_i1);
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_sput_19 t = new T_sput_19();
+        assertEquals(0.0f, T_sput_19.st_f1);
+        t.run();
+        assertEquals(3.14f, T_sput_19.st_f1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_sput_12 t = new T_sput_12();
+        assertEquals(0, T_sput_12.st_i1);
+        t.run();
+        assertEquals(1000000, T_sput_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput.d.T_sput_1
+        //@uses dot.junit.opcodes.sput.d.T_sput_14
+        T_sput_14 t = new T_sput_14();
+        assertEquals(0, T_sput_14.getProtectedField());
+        t.run();
+        assertEquals(1000000, T_sput_14.getProtectedField());
+    }
+
+    /**
+     * @title Trying to put float into integer field. Dalvik doens't distinguish 32-bits types
+     * internally, so this operation makes no sense but shall not crash the VM.
+     */
+    public void testN6() {
+        T_sput_5 t = new  T_sput_5();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_13 t = new T_sput_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title  put integer into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double field
+     * with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput.TestStubs
+        //@uses dot.junit.opcodes.sput.d.T_sput_8
+        try {
+            new T_sput_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput.d.T_sput_1
+        //@uses dot.junit.opcodes.sput.d.T_sput_15
+        try {
+             new T_sput_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput shall not work for boolean fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput.TestStubs
+        //@uses dot.junit.opcodes.sput.d.T_sput_11
+    	try {
+            new T_sput_11().run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.d
new file mode 100644
index 0000000..748fd1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_1.java
+.class public dot.junit.opcodes.sput.d.T_sput_1
+.super java/lang/Object
+
+.field public static st_i1 I
+.field protected static st_p1 I
+.field private static st_pvt1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()I
+.limit regs 2
+
+       sget v0, dot.junit.opcodes.sput.d.T_sput_1.st_pvt1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_1.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.java
new file mode 100644
index 0000000..3bc4484
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_1 {
+    public static int st_i1;
+    protected static int st_p1;
+    private static int st_pvt1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+    
+    public static int getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.d
new file mode 100644
index 0000000..d753fd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_10.java
+.class public dot.junit.opcodes.sput.d.T_sput_10
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_10.st_i1N I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.java
new file mode 100644
index 0000000..01a9d6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.d
new file mode 100644
index 0000000..90cc7c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_11.java
+.class public dot.junit.opcodes.sput.d.T_sput_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.TestStubs.TestStubFieldFinal I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.java
new file mode 100644
index 0000000..1f7ca52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.d
new file mode 100644
index 0000000..6543443
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_12.java
+.class public dot.junit.opcodes.sput.d.T_sput_12
+.super java/lang/Object
+
+.field public static final st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_12.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.java
new file mode 100644
index 0000000..8e5f7a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_12 {
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.d
new file mode 100644
index 0000000..f6c9d9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput.d.StubInitError
+.super java/lang/Object
+
+.field public static value I
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput v1, dot.junit.opcodes.sput.d.StubInitError.value I
+       return-void
+.end method
+
+
+.source T_sput_13.java
+.class public dot.junit.opcodes.sput.d.T_sput_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.StubInitError.value I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.java
new file mode 100644
index 0000000..4693899
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+class StubInitError {
+    static int value = 5 / 0; 
+}
+
+public class T_sput_13 {
+    
+    public void run() {
+        StubInitError.value = 12;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.d
new file mode 100644
index 0000000..89cab9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_14.java
+.class public dot.junit.opcodes.sput.d.T_sput_14
+.super dot/junit/opcodes/sput/d/T_sput_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput/d/T_sput_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()I
+.limit regs 2
+
+       sget v0, dot.junit.opcodes.sput.d.T_sput_1.st_p1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_1.st_p1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.java
new file mode 100644
index 0000000..102f226
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_14 extends T_sput_1{
+    
+    public void run() {
+        T_sput_1.st_p1 = 1000000;
+    }
+    
+    public static int getProtectedField(){
+        return T_sput_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.d
new file mode 100644
index 0000000..e2723fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_15.java
+.class public dot.junit.opcodes.sput.d.T_sput_15
+.super dot/junit/opcodes/sput/d/T_sput_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput/d/T_sput_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 12321
+       sput v1, dot.junit.opcodes.sput.d.T_sput_1.st_pvt1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.java
new file mode 100644
index 0000000..25944f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_16.java
new file mode 100644
index 0000000..3360d43
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_16.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_16 {
+    public static Object o;
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.d
new file mode 100644
index 0000000..ce6a0a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_17.java
+.class public dot.junit.opcodes.sput.d.T_sput_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_17.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.java
new file mode 100644
index 0000000..c96b5eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.d
new file mode 100644
index 0000000..7a79061
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_18.java
+.class public dot.junit.opcodes.sput.d.T_sput_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.d
new file mode 100644
index 0000000..d0f53cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_19.java
+.class public dot.junit.opcodes.sput.d.T_sput_19
+.super java/lang/Object
+
+.field public static st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       sput v1, dot.junit.opcodes.sput.d.T_sput_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.java
new file mode 100644
index 0000000..854e9fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_19 {
+    public static float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.d
new file mode 100644
index 0000000..9989c88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_2.java
+.class public dot.junit.opcodes.sput.d.T_sput_2
+.super java/lang/Object
+
+.field public static st_d1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v1, 1000000.000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_2.st_d1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.d
new file mode 100644
index 0000000..9229d34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_20.java
+.class public dot.junit.opcodes.sput.d.T_sput_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v3, 0
+       sput v3, dot.junit.opcodes.sput.d.T_sput_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.d
new file mode 100644
index 0000000..bc08d1d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_21.java
+.class public dot.junit.opcodes.sput.d.T_sput_21
+.super java/lang/Object
+
+.field public static st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1234    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.d
new file mode 100644
index 0000000..ff17473
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_22.java
+.class public dot.junit.opcodes.sput.d.T_sput_22
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_22.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.d
new file mode 100644
index 0000000..10cdb15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_23.java
+.class public dot.junit.opcodes.sput.d.T_sput_23
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.d
new file mode 100644
index 0000000..5b6bac3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_24.java
+.class public dot.junit.opcodes.sput.d.T_sput_24
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.d
new file mode 100644
index 0000000..22aaeef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_3.java
+.class public dot.junit.opcodes.sput.d.T_sput_3
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1234
+       sput v0, dot.junit.opcodes.sput.d.T_sput_3.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.dfh
new file mode 100644
index 0000000..f7d95ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07553f66
+    66 3F 55 07 
+// parsed: offset 12, len 20: signature           : 2441...71d9
+    24 41 F7 4C E7 A3 98 B5 AC 67 0E F8 6B D1 13 E3 DD 10 71 D9 
+// parsed: offset 32, len 4: file_size           : 540
+    1C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 404 (0x000194)
+    94 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 304
+    30 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "I"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 336 (0x000150) "Ljava/lang/Object;"
+    50 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 356 (0x000164) "T_sput_3.java"
+    64 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "V"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 374 (0x000176) "run"
+    76 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 379 (0x00017b) "st_i1"
+    7B 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput/d/T_sput_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 386 (0x000182)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 82 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x000004d2 int
+            14 00 D2 04 00 00 
+        // parsed: offset 282, len 4: |0003: sput v0, Ldot/junit/opcodes/sput/d/T_sput_3;.st_i1:I // field@0000
+//@mod            67 00 00 00 
+            67 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 299, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 2F 64 2F 54 5F 73 70 75 74 5F 33 3B 00 
+// parsed: offset 336, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 356, len 15: TYPE_STRING_DATA_ITEM [4] "T_sput_3.java"
+    0D 54 5F 73 70 75 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 371, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 374, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 379, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    // parsed: offset 386, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 387, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 388, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 389, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 390, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 391, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 392, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 393, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 396, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 399, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 400, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 402, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 404, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 408, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 420, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 432, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 444, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 456, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 468, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 480, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 492, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 504, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 516, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 386 (0x000182)
+        00 20 00 00 01 00 00 00 82 01 00 00 
+    // parsed: offset 528, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 10 00 00 01 00 00 00 94 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.d
new file mode 100644
index 0000000..2ca3434
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_4.java
+.class public dot.junit.opcodes.sput.d.T_sput_4
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput v3, dot.junit.opcodes.sput.d.T_sput_4.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.d
new file mode 100644
index 0000000..25a88ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_5.java
+.class public dot.junit.opcodes.sput.d.T_sput_5
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)V
+.limit regs 3
+
+       sput v2, dot.junit.opcodes.sput.d.T_sput_5.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.java
new file mode 100644
index 0000000..1625283
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_5 {
+    public static int st_i1;
+    
+    public void run(float f) {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.d
new file mode 100644
index 0000000..7bad17d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_7.java
+.class public dot.junit.opcodes.sput.d.T_sput_7
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput v1, dot.junit.opcodes.sput.d.T_sput_7.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.java
new file mode 100644
index 0000000..8b22c00
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.d
new file mode 100644
index 0000000..f1b1561
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_8.java
+.class public dot.junit.opcodes.sput.d.T_sput_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput v1, dot.junit.opcodes.sput.TestStubs.TestStubField I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.java
new file mode 100644
index 0000000..5ccae38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.d
new file mode 100644
index 0000000..2e4fe0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_9.java
+.class public dot.junit.opcodes.sput.d.T_sput_9
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput v1, dot.junit.opcodes.sput.d.T_sput_9noclass.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.java
new file mode 100644
index 0000000..b8f71e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/TestStubs.java
new file mode 100644
index 0000000..c6bbc0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean;
+
+public class TestStubs {
+    // used by testVFE9
+    static boolean TestStubField = false;
+    
+    // used by testE5
+    public static final boolean TestStubFieldFinal = false;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java
new file mode 100644
index 0000000..f503ec6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java
@@ -0,0 +1,319 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_10;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_11;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_12;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_13;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_14;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_15;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_17;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_7;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_8;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_9;
+
+
+public class Test_sput_boolean extends DxTestCase {
+
+    /**
+     * @title put boolean into static field
+     */
+    public void testN1() {
+        T_sput_boolean_1 t = new T_sput_boolean_1();
+        assertEquals(false, T_sput_boolean_1.st_i1);
+        t.run();
+        assertEquals(true, T_sput_boolean_1.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_boolean_12 t = new T_sput_boolean_12();
+        assertEquals(false, T_sput_boolean_12.st_i1);
+        t.run();
+        assertEquals(true, T_sput_boolean_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_14
+        T_sput_boolean_14 t = new T_sput_boolean_14();
+        assertEquals(false, T_sput_boolean_14.getProtectedField());
+        t.run();
+        assertEquals(true, T_sput_boolean_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_boolean_13 t = new T_sput_boolean_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put boolean into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_boolean_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title put value '2' into boolean field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_boolean_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_boolean.TestStubs
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_8
+        try {
+            new T_sput_boolean_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_boolean_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_boolean_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_15
+        try {
+            new T_sput_boolean_15().run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput_boolean shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput_boolean shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput_boolean shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput_boolean shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput_boolean shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput_boolean shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title Modification of final field in other class.
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_boolean.TestStubs
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_11
+
+    	try {
+    		new T_sput_boolean_11().run();
+    		fail("expected IllegalAccessError");
+    	} catch (IllegalAccessError t) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d
new file mode 100644
index 0000000..8078d65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_1.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1
+.super java/lang/Object
+
+.field public static st_i1 Z
+.field protected static st_p1 Z
+.field private static st_pvt1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()Z
+.limit regs 2
+
+       sget-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_pvt1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.java
new file mode 100644
index 0000000..3e28038
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_1 {
+    public static boolean st_i1;
+    protected static boolean st_p1;
+    private static boolean st_pvt1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+    
+    public static boolean getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d
new file mode 100644
index 0000000..672420d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_10.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_10
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_10.st_i1N Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.java
new file mode 100644
index 0000000..1bb1f7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d
new file mode 100644
index 0000000..796ac2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_11.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.TestStubs.TestStubFieldFinal Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.java
new file mode 100644
index 0000000..a69a474
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d
new file mode 100644
index 0000000..d6db6ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_12.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_12
+.super java/lang/Object
+
+.field public static final st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_12.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.java
new file mode 100644
index 0000000..8721911
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_12 {
+    public static boolean st_i1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d
new file mode 100644
index 0000000..0f89bc2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_boolean.d.StubInitError
+.super java/lang/Object
+
+.field public static value Z
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.StubInitError.value Z
+       return-void
+.end method
+
+
+.source T_sput_boolean_13.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.StubInitError.value Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java
new file mode 100644
index 0000000..20d2977
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+class StubInitError {
+    static boolean value = 5 / 0 > 0 ? true : false; 
+}
+
+public class T_sput_boolean_13 {
+    
+    public void run() {
+        StubInitError.value = true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d
new file mode 100644
index 0000000..cbaa0e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_14.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_14
+.super dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()Z
+.limit regs 2
+
+       sget-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_p1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_p1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.java
new file mode 100644
index 0000000..376f60f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_14 extends T_sput_boolean_1{
+    
+    public void run() {
+        T_sput_boolean_1.st_p1 = true;
+    }
+    
+    public static boolean getProtectedField(){
+        return T_sput_boolean_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d
new file mode 100644
index 0000000..4adc0ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_15.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_15
+.super dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_pvt1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.java
new file mode 100644
index 0000000..467fc55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d
new file mode 100644
index 0000000..53dbe8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_17.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_17.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.java
new file mode 100644
index 0000000..5e126b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d
new file mode 100644
index 0000000..080e547
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_18.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d
new file mode 100644
index 0000000..f7922af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_19.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_19
+.super java/lang/Object
+
+.field public static st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.java
new file mode 100644
index 0000000..1cf93cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_19 {
+    public static float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d
new file mode 100644
index 0000000..9e6fe7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_2.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_2
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d
new file mode 100644
index 0000000..abc0227
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_20.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v3, 0    
+       sput-boolean v3, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d
new file mode 100644
index 0000000..b1e5f5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_21.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_21
+.super java/lang/Object
+
+.field public static st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d
new file mode 100644
index 0000000..e13f364
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_22.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d
new file mode 100644
index 0000000..9a5ae68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_23.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_23
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d
new file mode 100644
index 0000000..3fe5b45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_24.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_24
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d
new file mode 100644
index 0000000..874c5f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_3.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dfh
new file mode 100644
index 0000000..db54511
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e7454821
+    21 48 45 E7 
+// parsed: offset 12, len 20: signature           : 6104...6e2c
+    61 04 5D 28 79 FC E7 CF 89 5A 03 2C 25 BC 80 A4 F5 A3 6E 2C 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 328
+    48 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 349 (0x00015d) "Ljava/lang/Object;"
+    5D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 369 (0x000171) "T_sput_boolean_3.java"
+    71 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 392 (0x000188) "V"
+    88 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "Z"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "run"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "st_i1"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 7 (0x000007) "st_i1"
+    00 00 03 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_sput_boolean_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;.st_i1:Z // field@0000
+//@mod            6A 00 00 00 
+            6A 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 73 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 3B 00 
+// parsed: offset 349, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 369, len 23: TYPE_STRING_DATA_ITEM [3] "T_sput_boolean_3.java"
+    15 54 5F 73 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 392, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 398, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 403, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    // parsed: offset 410, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 414, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 415, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d
new file mode 100644
index 0000000..d0a7422
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_4.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-boolean v3, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d
new file mode 100644
index 0000000..d50c573
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_6.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6
+.super java/lang/Object
+
+.field public static s Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v2, 2    
+       sput-boolean v2, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6.s Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d
new file mode 100644
index 0000000..c6b97f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_7.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_7
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_7.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.java
new file mode 100644
index 0000000..7a97328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d
new file mode 100644
index 0000000..4b781da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_8.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.TestStubs.TestStubField Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.java
new file mode 100644
index 0000000..8d738ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d
new file mode 100644
index 0000000..6deddd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_9.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_9
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_9noclass.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.java
new file mode 100644
index 0000000..6028d28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/TestStubs.java
new file mode 100644
index 0000000..7b530ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte;
+
+public class TestStubs {
+    // used by testVFE9
+    static byte TestStubField = 1;
+    
+    // used by testE5
+    public static final byte TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java
new file mode 100644
index 0000000..c64f876
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_1;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_10;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_11;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_12;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_13;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_14;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_15;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_17;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_7;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_8;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_9;
+
+public class Test_sput_byte extends DxTestCase {
+    /**
+     * @title put byte into static field
+     */
+    public void testN1() {
+        T_sput_byte_1 t = new T_sput_byte_1();
+        assertEquals(0, T_sput_byte_1.st_i1);
+        t.run();
+        assertEquals(77, T_sput_byte_1.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_byte_12 t = new T_sput_byte_12();
+        assertEquals(0, T_sput_byte_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_byte_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_1
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_14
+        T_sput_byte_14 t = new T_sput_byte_14();
+        assertEquals(0, T_sput_byte_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_byte_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_byte_13 t = new T_sput_byte_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put byte into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_byte_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title put value '256' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_byte_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_byte.TestStubs
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_8
+        try {
+            new T_sput_byte_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_byte_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_byte_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_1
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_15
+        try {
+            new T_sput_byte_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput-byte shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-byte shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-byte shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-byte shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-byte shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sput-byte shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_byte.TestStubs
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_11
+    	try {
+            new T_sput_byte_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d
new file mode 100644
index 0000000..ec9b61c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_1.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_1
+.super java/lang/Object
+
+.field public static st_i1 B
+.field protected static st_p1 B
+.field private static st_pvt1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()B
+.limit regs 2
+
+       sget-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_pvt1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.java
new file mode 100644
index 0000000..56c52c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_1 {
+    public static byte st_i1;
+    protected static byte st_p1;
+    private static byte st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public static byte getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d
new file mode 100644
index 0000000..f0a420c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_10.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_10
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_10.st_i1N B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.java
new file mode 100644
index 0000000..0b49e2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d
new file mode 100644
index 0000000..7a3faff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_11.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.TestStubs.TestStubFieldFinal B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.java
new file mode 100644
index 0000000..1cf3e6c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d
new file mode 100644
index 0000000..41e2aff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_12.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_12
+.super java/lang/Object
+
+.field public static final st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_12.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.java
new file mode 100644
index 0000000..4e438a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_12 {
+    public static byte st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d
new file mode 100644
index 0000000..2271ca2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_byte.d.StubInitError
+.super java/lang/Object
+
+.field public static value B
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.StubInitError.value B
+       return-void
+.end method
+
+
+.source T_sput_byte_13.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.StubInitError.value B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java
new file mode 100644
index 0000000..5270328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+class StubInitError {
+    static byte value = (byte)(5 / 0); 
+}
+
+public class T_sput_byte_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d
new file mode 100644
index 0000000..1b216a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_14.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_14
+.super dot/junit/opcodes/sput_byte/d/T_sput_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_byte/d/T_sput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()B
+.limit regs 2
+
+       sget-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_p1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_p1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.java
new file mode 100644
index 0000000..67075e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_14 extends T_sput_byte_1{
+    
+    public void run() {
+        T_sput_byte_1.st_p1 = 77;
+    }
+    
+    public static byte getProtectedField(){
+        return T_sput_byte_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d
new file mode 100644
index 0000000..8fd5828
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_15.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_15
+.super dot/junit/opcodes/sput_byte/d/T_sput_byte_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_byte/d/T_sput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_pvt1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.java
new file mode 100644
index 0000000..c797268
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d
new file mode 100644
index 0000000..76bd507
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_17.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_17.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.java
new file mode 100644
index 0000000..4ee32fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d
new file mode 100644
index 0000000..159ef4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_18.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d
new file mode 100644
index 0000000..c9520be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_2.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_2
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d
new file mode 100644
index 0000000..9a77ec6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_20.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-byte v3, dot.junit.opcodes.sput_byte.d.T_sput_byte_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
new file mode 100644
index 0000000..15a924b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_21.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_21
+.super java/lang/Object
+
+.field public static st_s I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_21.st_s I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
new file mode 100644
index 0000000..3501490
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_22.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_22
+.super java/lang/Object
+
+.field public static st_b I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_22.st_b I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d
new file mode 100644
index 0000000..a34f665
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_23.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_23
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d
new file mode 100644
index 0000000..07265af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_24.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d
new file mode 100644
index 0000000..128d14b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_3.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_3
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_3.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dfh
new file mode 100644
index 0000000..86678ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e05a4586
+    86 45 5A E0 
+// parsed: offset 12, len 20: signature           : 90cf...df87
+    90 CF A4 6E C3 FD 39 4D 4D 5C E0 CB 09 2E 87 21 CC F6 DF 87 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "B"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_sput_byte_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_byte_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_byte.d.T_sput_byte_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_byte.d.T_sput_byte_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;.st_i1:B // field@0000
+//@mod            6B 00 00 00 
+            6B 00 00 01
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 62 79 74 65 2F 64 2F 54 5F 73 70 75 74 5F 62 79 74 65 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_sput_byte_3.java"
+    12 54 5F 73 70 75 74 5F 62 79 74 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    // parsed: offset 401, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 402, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d
new file mode 100644
index 0000000..fc64b62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_4.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_4
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-byte v3, dot.junit.opcodes.sput_byte.d.T_sput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d
new file mode 100644
index 0000000..f41929a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_6.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_6
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 256
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_6.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d
new file mode 100644
index 0000000..8e90c22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_7.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_7
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_7.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.java
new file mode 100644
index 0000000..8871136
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d
new file mode 100644
index 0000000..f4a000f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_8.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-byte v1, dot.junit.opcodes.sput_byte.TestStubs.TestStubField B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.java
new file mode 100644
index 0000000..0e1605f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d
new file mode 100644
index 0000000..59ecb38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_9.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_9
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_9noclass.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.java
new file mode 100644
index 0000000..0262d88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/TestStubs.java
new file mode 100644
index 0000000..fb91f68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char;
+
+public class TestStubs {
+    // used by testVFE9
+    static char TestStubField = 1;
+    
+    // used by testE5
+    public static final char TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/Test_sput_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/Test_sput_char.java
new file mode 100644
index 0000000..120b45a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/Test_sput_char.java
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_char.d.T_sput_char_1;
+import dot.junit.opcodes.sput_char.d.T_sput_char_10;
+import dot.junit.opcodes.sput_char.d.T_sput_char_11;
+import dot.junit.opcodes.sput_char.d.T_sput_char_12;
+import dot.junit.opcodes.sput_char.d.T_sput_char_13;
+import dot.junit.opcodes.sput_char.d.T_sput_char_14;
+import dot.junit.opcodes.sput_char.d.T_sput_char_15;
+import dot.junit.opcodes.sput_char.d.T_sput_char_17;
+import dot.junit.opcodes.sput_char.d.T_sput_char_7;
+import dot.junit.opcodes.sput_char.d.T_sput_char_8;
+import dot.junit.opcodes.sput_char.d.T_sput_char_9;
+
+public class Test_sput_char extends DxTestCase {
+    /**
+     * @title put char into static field
+     */
+    public void testN1() {
+        T_sput_char_1 t = new T_sput_char_1();
+        assertEquals(0, T_sput_char_1.st_i1);
+        t.run();
+        assertEquals(77, T_sput_char_1.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_char_12 t = new T_sput_char_12();
+        assertEquals(0, T_sput_char_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_char_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_1
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_14
+        T_sput_char_14 t = new T_sput_char_14();
+        assertEquals(0, T_sput_char_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_char_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_char_13 t = new T_sput_char_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put char into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_char_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_char_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_char.TestStubs
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_8
+        try {
+            new T_sput_char_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_char_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_char_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_1
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_15
+        try {
+            new T_sput_char_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput-char shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-char shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-char shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-char shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-char shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-char shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_char.TestStubs
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_11
+    	try {
+            new T_sput_char_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d
new file mode 100644
index 0000000..8603349
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_1.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_1
+.super java/lang/Object
+
+.field public static st_i1 C
+.field protected static st_p1 C
+.field private static st_pvt1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()C
+.limit regs 2
+
+       sget-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_pvt1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.java
new file mode 100644
index 0000000..0437a31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_1 {
+    public static char st_i1;
+    protected static char st_p1;
+    private static char st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public static char getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d
new file mode 100644
index 0000000..ff47c26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_10.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_10
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_10.st_i1N C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.java
new file mode 100644
index 0000000..10f88f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d
new file mode 100644
index 0000000..6e23f44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_11.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.TestStubs.TestStubFieldFinal C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.java
new file mode 100644
index 0000000..600cc9d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d
new file mode 100644
index 0000000..8cb984f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_12.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_12
+.super java/lang/Object
+
+.field public static final st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_12.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.java
new file mode 100644
index 0000000..cd1f810
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_12 {
+    public static char st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d
new file mode 100644
index 0000000..5b97bc4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_char.d.StubInitError
+.super java/lang/Object
+
+.field public static value C
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-char v1, dot.junit.opcodes.sput_char.d.StubInitError.value C
+       return-void
+.end method
+
+
+.source T_sput_char_13.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.StubInitError.value C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java
new file mode 100644
index 0000000..786f121
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+class StubInitError {
+    static char value = (char)(5 / 0); 
+}
+
+public class T_sput_char_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d
new file mode 100644
index 0000000..f682166
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_14.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_14
+.super dot/junit/opcodes/sput_char/d/T_sput_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_char/d/T_sput_char_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()C
+.limit regs 2
+
+       sget-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_p1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_p1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.java
new file mode 100644
index 0000000..409b51c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_14 extends T_sput_char_1{
+    
+    public void run() {
+        T_sput_char_1.st_p1 = 77;
+    }
+    
+    public static char getProtectedField(){
+        return T_sput_char_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d
new file mode 100644
index 0000000..cccb96b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_15.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_15
+.super dot/junit/opcodes/sput_char/d/T_sput_char_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_char/d/T_sput_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_pvt1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.java
new file mode 100644
index 0000000..2b4d7d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d
new file mode 100644
index 0000000..22af6be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_17.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_17.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.java
new file mode 100644
index 0000000..349eaa2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d
new file mode 100644
index 0000000..f1fbeb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_18.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d
new file mode 100644
index 0000000..aa5f7d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_2.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_2
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d
new file mode 100644
index 0000000..92d2e6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_20.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-char v3, dot.junit.opcodes.sput_char.d.T_sput_char_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d
new file mode 100644
index 0000000..bdf6fe3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_21.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_21
+.super java/lang/Object
+
+.field public static st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d
new file mode 100644
index 0000000..fa16663
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_22.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d
new file mode 100644
index 0000000..fd69e4f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_23.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d
new file mode 100644
index 0000000..8862e51
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_24.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d
new file mode 100644
index 0000000..ff1725f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_3.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_3
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_3.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.dfh
new file mode 100644
index 0000000..45f6af2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_char/d/T_sput_char_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_char/d/T_sput_char_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : bc0b43dc
+    DC 43 0B BC 
+// parsed: offset 12, len 20: signature           : ade8...22aa
+    AD E8 8C 2F 92 1D 57 2F 31 A9 89 DE D2 D7 EF 3B 36 0D 22 AA 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "C"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_sput_char_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_char_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_char.d.T_sput_char_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_char.d.T_sput_char_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_3;.st_i1:C // field@0000
+//@mod            6C 00 00 00 
+            6C 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 63 68 61 72 2F 64 2F 54 5F 73 70 75 74 5F 63 68 61 72 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_sput_char_3.java"
+    12 54 5F 73 70 75 74 5F 63 68 61 72 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    // parsed: offset 401, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 402, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d
new file mode 100644
index 0000000..95cf09b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_4.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_4
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-char v3, dot.junit.opcodes.sput_char.d.T_sput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d
new file mode 100644
index 0000000..a2e504a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_6.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_6
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_6.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d
new file mode 100644
index 0000000..8c44574
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_7.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_7
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_7.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.java
new file mode 100644
index 0000000..7a496f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d
new file mode 100644
index 0000000..ac15f64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_8.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-char v1, dot.junit.opcodes.sput_char.TestStubs.TestStubField C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.java
new file mode 100644
index 0000000..c4a3e38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d
new file mode 100644
index 0000000..74279c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_9.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_9
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_9noclass.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.java
new file mode 100644
index 0000000..c38e18c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/TestStubs.java
new file mode 100644
index 0000000..701ece3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object;
+
+public class TestStubs {
+    // used by testVFE9
+    static Object TestStubField = null;
+    
+    // used by testE5
+    public static final Object TestStubFieldFinal = null;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/Test_sput_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/Test_sput_object.java
new file mode 100644
index 0000000..cd070a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/Test_sput_object.java
@@ -0,0 +1,318 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_object.d.T_sput_object_1;
+import dot.junit.opcodes.sput_object.d.T_sput_object_10;
+import dot.junit.opcodes.sput_object.d.T_sput_object_11;
+import dot.junit.opcodes.sput_object.d.T_sput_object_12;
+import dot.junit.opcodes.sput_object.d.T_sput_object_13;
+import dot.junit.opcodes.sput_object.d.T_sput_object_14;
+import dot.junit.opcodes.sput_object.d.T_sput_object_15;
+import dot.junit.opcodes.sput_object.d.T_sput_object_17;
+import dot.junit.opcodes.sput_object.d.T_sput_object_7;
+import dot.junit.opcodes.sput_object.d.T_sput_object_8;
+import dot.junit.opcodes.sput_object.d.T_sput_object_9;
+
+public class Test_sput_object extends DxTestCase {
+    /**
+     * @title put reference into static field
+     */
+    public void testN1() {
+        T_sput_object_1 t = new T_sput_object_1();
+        assertEquals(null, T_sput_object_1.st_i1);
+        t.run();
+        assertEquals(t, T_sput_object_1.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_object_12 t = new T_sput_object_12();
+        assertEquals(null, T_sput_object_12.st_i1);
+        t.run();
+        assertEquals(t, T_sput_object_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_1
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_14
+        T_sput_object_14 t = new T_sput_object_14();
+        assertEquals(null, T_sput_object_14.getProtectedField());
+        t.run();
+        assertEquals(t, T_sput_object_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_object_13 t = new T_sput_object_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put object into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_object_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_object_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_object.TestStubs
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_8
+        try {
+            new T_sput_object_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_object_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_object_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_1
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_15
+        try {
+            new T_sput_object_15().run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput-object shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title assignment incompatible references
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-object shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-object shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-object shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-object shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-object shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_object.TestStubs
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_11
+    	try {
+            new T_sput_object_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d
new file mode 100644
index 0000000..acb4903
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_1.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_1
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+.field protected static st_p1 Ljava/lang/Object;
+.field private static st_pvt1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()Ljava/lang/Object;
+.limit regs 2
+
+       sget-object v0, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_pvt1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.java
new file mode 100644
index 0000000..1bf8e5c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_1 {
+    public static Object st_i1;
+    protected static Object st_p1;
+    private static Object st_pvt1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+    
+    public static Object getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d
new file mode 100644
index 0000000..7f12b99
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_10.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_10
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_10.st_i1N Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.java
new file mode 100644
index 0000000..bbc15c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d
new file mode 100644
index 0000000..a09c4af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_11.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.TestStubs.TestStubFieldFinal Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.java
new file mode 100644
index 0000000..7f90df0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d
new file mode 100644
index 0000000..562d8ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_12.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_12
+.super java/lang/Object
+
+.field public static final st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_12.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.java
new file mode 100644
index 0000000..5a592c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_12 {
+    public static Object st_i1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d
new file mode 100644
index 0000000..d2d59da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_object.d.StubInitError
+.super java/lang/Object
+
+.field public static t I
+.field public static value Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput v1, dot.junit.opcodes.sput_object.d.StubInitError.t I
+       return-void
+.end method
+
+
+.source T_sput_object_13.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.StubInitError.value Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java
new file mode 100644
index 0000000..9e16873
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+class StubInitError {
+    static short t = (short)(5 / 0);
+    static Object value;
+}
+
+public class T_sput_object_13 {
+    
+    public void run() {
+        StubInitError.value = this;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d
new file mode 100644
index 0000000..89ed274
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_14.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_14
+.super dot/junit/opcodes/sput_object/d/T_sput_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_object/d/T_sput_object_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()Ljava/lang/Object;
+.limit regs 2
+
+       sget-object v0, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_p1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_p1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.java
new file mode 100644
index 0000000..87ea8fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_14 extends T_sput_object_1{
+    
+    public void run() {
+        T_sput_object_1.st_p1 = this;
+    }
+    
+    public static Object getProtectedField(){
+        return T_sput_object_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d
new file mode 100644
index 0000000..61d48e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_15.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_15
+.super dot/junit/opcodes/sput_object/d/T_sput_object_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_object/d/T_sput_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_pvt1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.java
new file mode 100644
index 0000000..676e4c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d
new file mode 100644
index 0000000..b46acdf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_17.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_17.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.java
new file mode 100644
index 0000000..6f7ad7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d
new file mode 100644
index 0000000..21c4c5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_18.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d
new file mode 100644
index 0000000..5b6c088
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_2.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_2
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1234    
+       sput-object v0, dot.junit.opcodes.sput_object.d.T_sput_object_2.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d
new file mode 100644
index 0000000..8d6c9df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_20.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/String;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_20.st_o Ljava/lang/String;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d
new file mode 100644
index 0000000..f09c1a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_21.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_21
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d
new file mode 100644
index 0000000..4ae60e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_22.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d
new file mode 100644
index 0000000..b440bb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_23.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d
new file mode 100644
index 0000000..63a01e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_24.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d
new file mode 100644
index 0000000..080efbc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_3.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_3
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+        sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_3.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.dfh
new file mode 100644
index 0000000..90b5887
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.dfh
@@ -0,0 +1,253 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_object/d/T_sput_object_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_object/d/T_sput_object_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c2134499
+    99 44 13 C2 
+// parsed: offset 12, len 20: signature           : ef04...607d
+    EF 04 C2 97 17 79 3D 72 CF 34 E1 02 0C 5F 88 73 55 DF 60 7D 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 7
+    07 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 140 (0x00008c)
+    8C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 196 (0x0000c4)
+    C4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 228 (0x0000e4)
+    E4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 276 (0x000114) "<init>"
+    14 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 284 (0x00011c) "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    1C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ljava/lang/Object;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "T_sput_object_3.java"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 377 (0x000179) "V"
+    79 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "run"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 385 (0x000181) "st_i1"
+    81 01 00 00 
+
+// type_ids:
+// parsed: offset 140, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    01 00 00 00 
+// parsed: offset 144, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 152, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 164, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "st_i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 180, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 188, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 196, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_sput_object_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 392 (0x000188)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 88 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_object.d.T_sput_object_3.<init>"
+    // parsed: offset 228, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 230, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 232, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 234, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 236, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 240, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 244, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 250, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_object.d.T_sput_object_3.run"
+    // parsed: offset 252, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 254, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 256, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 258, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 260, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 264, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 268, len 4: |0000: sput-object v2, Ldot/junit/opcodes/sput_object/d/T_sput_object_3;.st_i1:Ljava/lang/Object; // field@0000
+//@mod            69 02 00 00 
+            69 02 00 01 
+        // parsed: offset 272, len 2: |0002: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 274, len 2: PADDING
+    00 00 
+// parsed: offset 276, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 284, len 51: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 73 70 75 74 5F 6F 62 6A 65 63 74 5F 33 3B 00 
+// parsed: offset 335, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 355, len 22: TYPE_STRING_DATA_ITEM [3] "T_sput_object_3.java"
+    14 54 5F 73 70 75 74 5F 6F 62 6A 65 63 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 377, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 380, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// parsed: offset 385, len 7: TYPE_STRING_DATA_ITEM [6] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    // parsed: offset 392, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 393, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 394, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 395, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 396, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 397, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 399, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 402, len 2: code_off: 228 (0x0000e4)
+                E4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 404, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 405, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 406, len 2: code_off: 252 (0x0000fc)
+                FC 01 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 112 (0x000070)
+        01 00 00 00 07 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 140 (0x00008c)
+        02 00 00 00 03 00 00 00 8C 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 152 (0x000098)
+        03 00 00 00 01 00 00 00 98 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 164 (0x0000a4)
+        04 00 00 00 01 00 00 00 A4 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        05 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 196 (0x0000c4)
+        06 00 00 00 01 00 00 00 C4 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 228 (0x0000e4)
+        01 20 00 00 02 00 00 00 E4 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 276 (0x000114)
+        02 20 00 00 07 00 00 00 14 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 392 (0x000188)
+        00 20 00 00 01 00 00 00 88 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d
new file mode 100644
index 0000000..3a3bccd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_4.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_4
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_4.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d
new file mode 100644
index 0000000..b43597a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_6.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_6
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d
new file mode 100644
index 0000000..84988f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_7.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_7
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_7.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.java
new file mode 100644
index 0000000..0e5f873
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d
new file mode 100644
index 0000000..26495a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_8.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.java
new file mode 100644
index 0000000..d3d7408
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d
new file mode 100644
index 0000000..2d35cf1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_9.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_9
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_9noclass.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.java
new file mode 100644
index 0000000..bef9d16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/TestStubs.java
new file mode 100644
index 0000000..dd67611
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short;
+
+public class TestStubs {
+    // used by testVFE9
+    static short TestStubField = 1;
+    
+    // used by testE5
+    public static final short TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/Test_sput_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/Test_sput_short.java
new file mode 100644
index 0000000..f14c4a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/Test_sput_short.java
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_short.d.T_sput_short_1;
+import dot.junit.opcodes.sput_short.d.T_sput_short_10;
+import dot.junit.opcodes.sput_short.d.T_sput_short_11;
+import dot.junit.opcodes.sput_short.d.T_sput_short_12;
+import dot.junit.opcodes.sput_short.d.T_sput_short_13;
+import dot.junit.opcodes.sput_short.d.T_sput_short_14;
+import dot.junit.opcodes.sput_short.d.T_sput_short_15;
+import dot.junit.opcodes.sput_short.d.T_sput_short_17;
+import dot.junit.opcodes.sput_short.d.T_sput_short_7;
+import dot.junit.opcodes.sput_short.d.T_sput_short_8;
+import dot.junit.opcodes.sput_short.d.T_sput_short_9;
+
+public class Test_sput_short extends DxTestCase {
+    /**
+     * @title put short into static field
+     */
+    public void testN1() {
+        T_sput_short_1 t = new T_sput_short_1();
+        assertEquals(0, T_sput_short_1.st_i1);
+        t.run();
+        assertEquals(77, T_sput_short_1.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_short_12 t = new T_sput_short_12();
+        assertEquals(0, T_sput_short_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_short_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_1
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_14
+        T_sput_short_14 t = new T_sput_short_14();
+        assertEquals(0, T_sput_short_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_short_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_short_13 t = new T_sput_short_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put short into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_short_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_short_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_short.TestStubs
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_8
+        try {
+            new T_sput_short_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_short_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_short_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_1
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_15
+        try {
+            new T_sput_short_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput-short shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-short shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-short shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-short shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-short shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-short shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_short.TestStubs
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_11
+    	try {
+            new T_sput_short_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d
new file mode 100644
index 0000000..f41be35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_1.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_1
+.super java/lang/Object
+
+.field public static st_i1 S
+.field protected static st_p1 S
+.field private static st_pvt1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()S
+.limit regs 2
+
+       sget-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_pvt1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.java
new file mode 100644
index 0000000..c2d792d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_1 {
+    public static short st_i1;
+    protected static short st_p1;
+    private static short st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public static short getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d
new file mode 100644
index 0000000..10a12b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_10.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_10
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_10.st_i1N S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.java
new file mode 100644
index 0000000..3af3f04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d
new file mode 100644
index 0000000..4351376
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_11.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.TestStubs.TestStubFieldFinal S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.java
new file mode 100644
index 0000000..15f6124
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d
new file mode 100644
index 0000000..a9dbbb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_12.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_12
+.super java/lang/Object
+
+.field public static final st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_12.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.java
new file mode 100644
index 0000000..f6edd67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_12 {
+    public static short st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d
new file mode 100644
index 0000000..55d0bf5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_short.d.StubInitError
+.super java/lang/Object
+
+.field public static value S
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-short v1, dot.junit.opcodes.sput_short.d.StubInitError.value S
+       return-void
+.end method
+
+
+.source T_sput_short_13.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.StubInitError.value S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java
new file mode 100644
index 0000000..3750c17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+class StubInitError {
+    static short value = (short)(5 / 0); 
+}
+
+public class T_sput_short_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d
new file mode 100644
index 0000000..a836771
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_14.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_14
+.super dot/junit/opcodes/sput_short/d/T_sput_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_short/d/T_sput_short_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()S
+.limit regs 2
+
+       sget-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_p1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_p1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.java
new file mode 100644
index 0000000..2aa5061
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_14 extends T_sput_short_1{
+    
+    public void run() {
+        T_sput_short_1.st_p1 = 77;
+    }
+    
+    public static short getProtectedField(){
+        return T_sput_short_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d
new file mode 100644
index 0000000..4848a3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_15.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_15
+.super dot/junit/opcodes/sput_short/d/T_sput_short_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_short/d/T_sput_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_pvt1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.java
new file mode 100644
index 0000000..04f6a7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d
new file mode 100644
index 0000000..3aba6fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_17.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_17.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.java
new file mode 100644
index 0000000..fa56416
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d
new file mode 100644
index 0000000..e1ef12c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_18.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d
new file mode 100644
index 0000000..f6c1a55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_2.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_2
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d
new file mode 100644
index 0000000..dc42d54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_20.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-short v3, dot.junit.opcodes.sput_short.d.T_sput_short_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d
new file mode 100644
index 0000000..a55af0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_21.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_21
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d
new file mode 100644
index 0000000..25375e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_22.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d
new file mode 100644
index 0000000..fc437cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_23.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d
new file mode 100644
index 0000000..16b16f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_24.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d
new file mode 100644
index 0000000..1246f9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_3.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_3
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_3.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.dfh
new file mode 100644
index 0000000..ac6f1b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.dfh
@@ -0,0 +1,259 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_short/d/T_sput_short_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_short/d/T_sput_short_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6a84455e
+    5E 45 84 6A 
+// parsed: offset 12, len 20: signature           : 2f3c...2c3e
+    2F 3C 42 F3 69 37 32 D5 2E D5 95 0C 52 19 F8 FB EA 75 2C 3E 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "Ljava/lang/Object;"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 365 (0x00016d) "S"
+    6D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 368 (0x000170) "T_sput_short_3.java"
+    70 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 397 (0x00018d) "st_i1"
+    8D 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 7 (0x000007) "st_i1"
+    00 00 02 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_short_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 404 (0x000194)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 94 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_short.d.T_sput_short_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_short.d.T_sput_short_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_3;.st_i1:S // field@0000
+//@mod            6D 00 00 00 
+            6D 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 73 70 75 74 5F 73 68 6F 72 74 5F 33 3B 00 
+// parsed: offset 345, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 365, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 368, len 21: TYPE_STRING_DATA_ITEM [4] "T_sput_short_3.java"
+    13 54 5F 73 70 75 74 5F 73 68 6F 72 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 397, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    // parsed: offset 404, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 405, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 407, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 408, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 409, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 410, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 411, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 414, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 417, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 418, len 2: code_off: 260 (0x000104)
+                84 02 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 20 00 00 01 00 00 00 94 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d
new file mode 100644
index 0000000..df600da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_4.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_4
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-short v3, dot.junit.opcodes.sput_short.d.T_sput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d
new file mode 100644
index 0000000..1b3904f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_6.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_6
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d
new file mode 100644
index 0000000..99d2bc6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_7.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_7
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_7.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.java
new file mode 100644
index 0000000..cbecc44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d
new file mode 100644
index 0000000..ce24cf8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_8.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-short v1, dot.junit.opcodes.sput_short.TestStubs.TestStubField S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.java
new file mode 100644
index 0000000..852263e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d
new file mode 100644
index 0000000..d5aa82f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_9.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_9
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_9noclass.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.java
new file mode 100644
index 0000000..e950c1d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/TestStubs.java
new file mode 100644
index 0000000..bc99fda
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide;
+
+public class TestStubs {
+    // used by testVFE9
+    static long TestStubField = 1;
+    
+    // used by testE5
+    public static final long TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/Test_sput_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/Test_sput_wide.java
new file mode 100644
index 0000000..29ff21b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/Test_sput_wide.java
@@ -0,0 +1,338 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_1;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_10;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_11;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_12;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_13;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_14;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_15;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_17;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_5;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_7;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_8;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_9;
+
+public class Test_sput_wide extends DxTestCase {
+    /**
+     * @title put long into static field
+     */
+    public void testN1() {
+        T_sput_wide_1 t = new T_sput_wide_1();
+        assertEquals(0, T_sput_wide_1.st_i1);
+        t.run();
+        assertEquals(778899112233l, T_sput_wide_1.st_i1);
+    }
+
+    /**
+     * @title put double into static field
+     */
+    public void testN2() {
+        T_sput_wide_5 t = new T_sput_wide_5();
+        assertEquals(0.0d, T_sput_wide_5.st_i1);
+        t.run();
+        assertEquals(0.5d, T_sput_wide_5.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_sput_wide_12 t = new T_sput_wide_12();
+        assertEquals(0, T_sput_wide_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_wide_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_1
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_14
+        T_sput_wide_14 t = new T_sput_wide_14();
+        assertEquals(0, T_sput_wide_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_wide_14.getProtectedField());
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_wide_13 t = new T_sput_wide_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put int into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_wide_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify float
+     * field with double-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.Dalvik throws IncompatibleClassChangeError when
+     * executing the code.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_wide_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field. Dalvik throws IllegalAccessError when executing
+     * the code.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_wide.TestStubs
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_8
+        try {
+            new T_sput_wide_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Dalvik throws NoClassDefFoundError when
+     * executing the code.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_9
+        try {
+            new T_sput_wide_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Dalvik throws NoSuchFieldError when executing the
+     * code.
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_10
+        try {
+            new T_sput_wide_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Dalvik throws
+     * IllegalAccessError when executing the code.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_1
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_15
+        try {
+            new T_sput_wide_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput-wide shall not work for single-width numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_wide.TestStubs
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_11
+    	try {
+            new T_sput_wide_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d
new file mode 100644
index 0000000..94e2898
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_1.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_1
+.super java/lang/Object
+
+.field public static st_i1 J
+.field protected static st_p1 J
+.field private static st_pvt1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()J
+.limit regs 2
+
+       sget-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_pvt1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 778899112233
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.java
new file mode 100644
index 0000000..422b3c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_1 {
+    public static long st_i1;
+    protected static long st_p1;
+    private static long st_pvt1;
+    
+    public void run() {
+        st_i1 = 778899112233l;
+    }
+    
+    public static long getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d
new file mode 100644
index 0000000..65a6012
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_10.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_10
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_10.st_i1N J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.java
new file mode 100644
index 0000000..b275744
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d
new file mode 100644
index 0000000..7cf07a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_11.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.TestStubs.TestStubFieldFinal J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.java
new file mode 100644
index 0000000..c458f05
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d
new file mode 100644
index 0000000..23fc53b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_12.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_12
+.super java/lang/Object
+
+.field public static final st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 77
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_12.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.java
new file mode 100644
index 0000000..3f0f128
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_12 {
+    public static long st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d
new file mode 100644
index 0000000..a130809
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source JtubInitError.java
+.class public dot.junit.opcodes.sput_wide.d.JtubInitError
+.super java/lang/Object
+
+.field public static value J
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.JtubInitError.value J
+       return-void
+.end method
+
+
+.source T_sput_wide_13.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.JtubInitError.value J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java
new file mode 100644
index 0000000..ab71754
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+class StubInitError {
+    static long value = (long)(5 / 0); 
+}
+
+public class T_sput_wide_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d
new file mode 100644
index 0000000..38d5ed5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_14.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_14
+.super dot/junit/opcodes/sput_wide/d/T_sput_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_wide/d/T_sput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()J
+.limit regs 2
+
+       sget-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_p1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 77
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_p1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.java
new file mode 100644
index 0000000..c919ee5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_14 extends T_sput_wide_1{
+    
+    public void run() {
+        T_sput_wide_1.st_p1 = 77;
+    }
+    
+    public static long getProtectedField(){
+        return T_sput_wide_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d
new file mode 100644
index 0000000..88531b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_15.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_15
+.super dot/junit/opcodes/sput_wide/d/T_sput_wide_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_wide/d/T_sput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_pvt1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.java
new file mode 100644
index 0000000..376cdd8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d
new file mode 100644
index 0000000..ab57cb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_17.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_17
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_17.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.java
new file mode 100644
index 0000000..244fa5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d
new file mode 100644
index 0000000..463bdbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_18.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_18
+.super java/lang/Object
+
+.field public static st_i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1.0
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_18.st_i1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d
new file mode 100644
index 0000000..84b5622
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_2.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_2
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d
new file mode 100644
index 0000000..ca43933
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_20.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-wide v3, dot.junit.opcodes.sput_wide.d.T_sput_wide_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d
new file mode 100644
index 0000000..04cf574
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_21.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_21
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 12    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d
new file mode 100644
index 0000000..d89d3cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_22.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d
new file mode 100644
index 0000000..da254f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_23.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d
new file mode 100644
index 0000000..e663946
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_24.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d
new file mode 100644
index 0000000..344db70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_3.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_3
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_3.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dfh
new file mode 100644
index 0000000..4236b7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 91f343d1
+    D1 43 F3 91 
+// parsed: offset 12, len 20: signature           : 659a...c933
+    65 9A 3C 32 A2 38 1F 9A AB B7 C9 11 22 6C 75 97 DF 86 C9 33 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "J"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 370 (0x000172) "T_sput_wide_3.java"
+    72 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 398 (0x00018e) "st_i1"
+    8E 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_wide_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_wide.d.T_sput_wide_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_wide.d.T_sput_wide_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 276, len 10: |0000: const-wide v0, #double 0.000000 // #0x0000000000000001 long
+            18 00 01 00 00 00 00 00 00 00 
+        // parsed: offset 286, len 4: |0005: sput-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;.st_i1:J // field@0000
+//@mod            68 00 00 00 
+            68 00 00 01 
+        // parsed: offset 290, len 2: |0007: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 303, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 77 69 64 65 2F 64 2F 54 5F 73 70 75 74 5F 77 69 64 65 5F 33 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 20: TYPE_STRING_DATA_ITEM [4] "T_sput_wide_3.java"
+    12 54 5F 73 70 75 74 5F 77 69 64 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 398, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    // parsed: offset 405, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 409, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 410, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 411, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 412, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 415, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 417, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 418, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 419, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 421, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d
new file mode 100644
index 0000000..0f29358
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_4.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_4
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-wide v3, dot.junit.opcodes.sput_wide.d.T_sput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d
new file mode 100644
index 0000000..0918986
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_5.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_5
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0.5
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_5.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.java
new file mode 100644
index 0000000..1147ce0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_5 {
+    public static double st_i1;
+    
+    public void run() {
+        st_i1 = 0.5d;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d
new file mode 100644
index 0000000..1552b40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_6.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_6
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d
new file mode 100644
index 0000000..726dfff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_7.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_7
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_7.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.java
new file mode 100644
index 0000000..4608227
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d
new file mode 100644
index 0000000..f14a34c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_8.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0
+       sput-wide v1, dot.junit.opcodes.sput_wide.TestStubs.TestStubField J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.java
new file mode 100644
index 0000000..17cf144
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d
new file mode 100644
index 0000000..64f57d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_9.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_9
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_9noclass.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.java
new file mode 100644
index 0000000..00355dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/Test_sub_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/Test_sub_double.java
new file mode 100644
index 0000000..5126c8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/Test_sub_double.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_double.d.T_sub_double_1;
+import dot.junit.opcodes.sub_double.d.T_sub_double_3;
+
+public class Test_sub_double extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(-0.43999999999999995d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_double_3 t = new T_sub_double_3();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = +0d, +0d
+     */
+    public void testB7() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(+0d, t.run(+0d, +0d));
+    }
+
+    /**
+     * @title Arguments = 2.7d, 2.7d
+     */
+    public void testB8() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(Double.MAX_VALUE, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, 4.9E-324
+     */
+    public void testB10() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, 4.9E-324));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d
new file mode 100644
index 0000000..99060a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_1.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.java
new file mode 100644
index 0000000..7193f2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double.d;
+
+public class T_sub_double_1 {
+
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d
new file mode 100644
index 0000000..e202f3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d
new file mode 100644
index 0000000..ac2644e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_3.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 7
+
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.java
new file mode 100644
index 0000000..9b8ee8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double.d;
+
+public class T_sub_double_3 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d
new file mode 100644
index 0000000..cf89f31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_4.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d
new file mode 100644
index 0000000..69bbda7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_5.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d
new file mode 100644
index 0000000..6995970
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_6.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+       move v1, v5
+       move v2, v6
+       move v3, v6       
+       sub-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/Test_sub_double_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/Test_sub_double_2addr.java
new file mode 100644
index 0000000..bdd4206
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/Test_sub_double_2addr.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_1;
+import dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_3;
+
+public class Test_sub_double_2addr extends DxTestCase {
+     /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(-0.43999999999999995d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_double_2addr_3 t = new T_sub_double_2addr_3();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = +0d, +0d
+     */
+    public void testB7() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(+0d, t.run(+0d, +0d));
+    }
+
+    /**
+     * @title Arguments = 2.7d, 2.7d
+     */
+    public void testB8() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(Double.MAX_VALUE, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, 4.9E-324
+     */
+    public void testB10() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, 4.9E-324));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d
new file mode 100644
index 0000000..8df12c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2addr_1.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.java
new file mode 100644
index 0000000..d99e5ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double_2addr.d;
+
+public class T_sub_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d
new file mode 100644
index 0000000..0b37443
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2addr_2.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d
new file mode 100644
index 0000000..a866a14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2addr_3.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 7
+
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.java
new file mode 100644
index 0000000..eb60bf7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double_2addr.d;
+
+public class T_sub_double_2addr_3 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d
new file mode 100644
index 0000000..a3236ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2addr_4.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d
new file mode 100644
index 0000000..aa69895
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2addr_5.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d
new file mode 100644
index 0000000..07bc954
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_6.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+       move v1, v5
+       move v2, v6
+       move v3, v6       
+       sub-double/2addr v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/Test_sub_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/Test_sub_float.java
new file mode 100644
index 0000000..2e41c99
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/Test_sub_float.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_float.d.T_sub_float_1;
+import dot.junit.opcodes.sub_float.d.T_sub_float_5;
+
+
+public class Test_sub_float extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(-0.44000006f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, -2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_float_5 t = new T_sub_float_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = +0f, +0f
+     */
+    public void testB7() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(+0f, t.run(+0f, +0f));
+    }
+
+    /**
+     * @title Arguments = 2.7f, 2.7f
+     */
+    public void testB8() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(Float.MAX_VALUE, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB10() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, 1.4E-45f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -Float.MAX_VALUE
+     */
+    public void testB11() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                -3.402823E+38F));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d
new file mode 100644
index 0000000..39f6708
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_1.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.java
new file mode 100644
index 0000000..573404e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float.d;
+
+public class T_sub_float_1 {
+
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d
new file mode 100644
index 0000000..c144976
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 3.1415
+       sub-float v0, v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d
new file mode 100644
index 0000000..0456de2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_3.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 9475928
+       sub-float v0, v3, v2
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d
new file mode 100644
index 0000000..1c73e66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_4.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d
new file mode 100644
index 0000000..c851a5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_5.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+
+       sub-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.java
new file mode 100644
index 0000000..dd3a944
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float.d;
+
+public class T_sub_float_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d
new file mode 100644
index 0000000..c069f2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_6.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/Test_sub_float_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/Test_sub_float_2addr.java
new file mode 100644
index 0000000..5d934b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/Test_sub_float_2addr.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_1;
+import dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_5;
+
+public class Test_sub_float_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(-0.44000006f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_float_2addr_5 t = new T_sub_float_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = +0f, +0f
+     */
+    public void testB7() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(+0f, t.run(+0f, +0f));
+    }
+
+    /**
+     * @title Arguments = 2.7f, 2.7f
+     */
+    public void testB8() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(Float.MAX_VALUE, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB10() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, 1.4E-45f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -Float.MAX_VALUE
+     */
+    public void testB11() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                -3.402823E+38F));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d
new file mode 100644
index 0000000..d1c6e61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_1.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.java
new file mode 100644
index 0000000..0838c38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float_2addr.d;
+
+public class T_sub_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d
new file mode 100644
index 0000000..3f3b632
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_2.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 3.1415
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d
new file mode 100644
index 0000000..5a5f610
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_3.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 9475928
+       sub-float/2addr v3, v2
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d
new file mode 100644
index 0000000..f60a149
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_4.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d
new file mode 100644
index 0000000..561ed3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_5.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.java
new file mode 100644
index 0000000..5a0c748
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float_2addr.d;
+
+public class T_sub_float_2addr_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d
new file mode 100644
index 0000000..8d94709
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_6.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/Test_sub_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/Test_sub_int.java
new file mode 100644
index 0000000..4a491cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/Test_sub_int.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_int.d.T_sub_int_1;
+import dot.junit.opcodes.sub_int.d.T_sub_int_5;
+
+public class Test_sub_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(4, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, -2147483647));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_sub_int_5 t = new  T_sub_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-2147483647, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, -1
+     */
+    public void testB3() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-2147483648, t.run(0, -Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB7() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(2147483646, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB8() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-2147483647, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB9() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d
new file mode 100644
index 0000000..019f739
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_1.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       sub-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.java
new file mode 100644
index 0000000..46c8b3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int.d;
+
+public class T_sub_int_1 {
+
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d
new file mode 100644
index 0000000..2d6c43f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456.0
+       sub-int v0, v2, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d
new file mode 100644
index 0000000..4ff0912
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_3.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456675
+       sub-int v0, v0, v2
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d
new file mode 100644
index 0000000..f3b57fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_4.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       sub-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d
new file mode 100644
index 0000000..f813789
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_5.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+
+       sub-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.java
new file mode 100644
index 0000000..ecc613b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int.d;
+
+public class T_sub_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d
new file mode 100644
index 0000000..b45a470
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_6.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       sub-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/Test_sub_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/Test_sub_int_2addr.java
new file mode 100644
index 0000000..cabd0f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/Test_sub_int_2addr.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_1;
+import dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_5;
+
+public class Test_sub_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(4, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, -2147483647));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_sub_int_2addr_5 t = new  T_sub_int_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-2147483647, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, -1
+     */
+    public void testB3() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, -1));
+    }
+
+    /** 
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-2147483648, t.run(0, -Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB7() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(2147483646, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB8() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-2147483647, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB9() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d
new file mode 100644
index 0000000..203da0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_1.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       sub-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.java
new file mode 100644
index 0000000..03dcff2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int_2addr.d;
+
+public class T_sub_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d
new file mode 100644
index 0000000..e3e5cab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_2.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456.0
+       sub-int/2addr v2, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d
new file mode 100644
index 0000000..cad0b89
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_3.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456675
+       sub-int/2addr v0, v2
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d
new file mode 100644
index 0000000..efce9cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_4.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       sub-int/2addr v0, v2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d
new file mode 100644
index 0000000..77b2c6f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_5.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       sub-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.java
new file mode 100644
index 0000000..14c9b65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int_2addr.d;
+
+public class T_sub_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d
new file mode 100644
index 0000000..1705eb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_6.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       sub-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/Test_sub_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/Test_sub_long.java
new file mode 100644
index 0000000..913ed6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/Test_sub_long.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_long.d.T_sub_long_1;
+import dot.junit.opcodes.sub_long.d.T_sub_long_2;
+
+public class Test_sub_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 1111127348242l, 11111111114l
+     */
+    public void testN1() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(1100016237128l, t.run(1111127348242l, 11111111114l));
+    }
+
+    /**
+     * @title Arguments = 0, 1111127348242l
+     */
+    public void testN2() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-1111127348242l, t.run(0, 1111127348242l));
+    }
+
+    /**
+     * @title Arguments = 0, -11111111114l
+     */
+    public void testN3() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(11111111114l, t.run(0, -11111111114l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+         T_sub_long_2 t = new  T_sub_long_2();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = 0l, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 9223372036854775807L, Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(0l, t.run(9223372036854775807L, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1l
+     */
+    public void testB3() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB4() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(9223372036854775807L, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = 0l, 0l
+     */
+    public void testB5() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0l, -Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-9223372036854775808L, t.run(0l, -Long.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d
new file mode 100644
index 0000000..4367232
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_1.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       sub-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.java
new file mode 100644
index 0000000..24a0f90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long.d;
+
+public class T_sub_long_1 {
+    
+    public long run(long a, long b) {
+        return a-b;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d
new file mode 100644
index 0000000..6e191ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+       sub-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.java
new file mode 100644
index 0000000..733b4dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long.d;
+
+public class T_sub_long_2 {
+    
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d
new file mode 100644
index 0000000..5fe421f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_3.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       const v3, 12346
+       sub-long v0, v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d
new file mode 100644
index 0000000..7ab2d2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_4.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       const v5, 12346.0
+       sub-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d
new file mode 100644
index 0000000..c498408
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_5.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       sub-long v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d
new file mode 100644
index 0000000..f9f2065
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_6.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       sub-long v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/Test_sub_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/Test_sub_long_2addr.java
new file mode 100644
index 0000000..27a3d09
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/Test_sub_long_2addr.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_1;
+import dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_2;
+
+public class Test_sub_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 1111127348242l, 11111111114l
+     */
+    public void testN1() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(1100016237128l, t.run(1111127348242l, 11111111114l));
+    }
+
+    /**
+     * @title Arguments = 0, 1111127348242l
+     */
+    public void testN2() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-1111127348242l, t.run(0, 1111127348242l));
+    }
+
+    /**
+     * @title Arguments = 0, -11111111114l
+     */
+    public void testN3() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(11111111114l, t.run(0, -11111111114l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_long_2addr_2 t = new  T_sub_long_2addr_2();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = 0l, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 9223372036854775807L, Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(0l, t.run(9223372036854775807L, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1l
+     */
+    public void testB3() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB4() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = 0l, 0l
+     */
+    public void testB5() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0l, -Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(0l, -Long.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d
new file mode 100644
index 0000000..f416a03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_1.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.java
new file mode 100644
index 0000000..8d66c2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long_2addr.d;
+
+public class T_sub_long_2addr_1 {
+    
+    public long run(long a, long b) {
+        return a-b;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d
new file mode 100644
index 0000000..eb91aff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_2.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.java
new file mode 100644
index 0000000..33f4b88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long_2addr.d;
+
+public class T_sub_long_2addr_2 {
+    
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d
new file mode 100644
index 0000000..bea4aea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_3.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v3, 12346
+       sub-long/2addr v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d
new file mode 100644
index 0000000..57d6c24
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_4.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       const v5, 12346.0
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d
new file mode 100644
index 0000000..da99ce1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_5.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       sub-long/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d
new file mode 100644
index 0000000..fb874e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_6.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       sub-long/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/Test_ushr_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/Test_ushr_int.java
new file mode 100644
index 0000000..2701607
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/Test_ushr_int.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_int.d.T_ushr_int_1;
+import dot.junit.opcodes.ushr_int.d.T_ushr_int_5;
+
+public class Test_ushr_int extends DxTestCase {
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0x7FFFFFF8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int >>> float) makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_ushr_int_5 t = new  T_ushr_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0x40000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d
new file mode 100644
index 0000000..dd22d10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_1.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.java
new file mode 100644
index 0000000..b633fc2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int.d;
+
+public class T_ushr_int_1 {
+
+    public int run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d
new file mode 100644
index 0000000..75880f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       move v1, v2
+       const-wide v2, 12345.0
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d
new file mode 100644
index 0000000..802f349
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_3.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.limit regs 4
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d
new file mode 100644
index 0000000..289c777
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_4.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int v1, v1, v0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d
new file mode 100644
index 0000000..2fdf2b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_5.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.java
new file mode 100644
index 0000000..4b5c31f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int.d;
+
+public class T_ushr_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d
new file mode 100644
index 0000000..b216968
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_6.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_6
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int v1, v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/Test_ushr_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/Test_ushr_int_2addr.java
new file mode 100644
index 0000000..e1c4217
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/Test_ushr_int_2addr.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_1;
+import dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_5;
+
+public class Test_ushr_int_2addr extends DxTestCase {
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0x7FFFFFF8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int >>> float) makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_ushr_int_2addr_5 t = new  T_ushr_int_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0x40000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d
new file mode 100644
index 0000000..5ee3392
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_1.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.java
new file mode 100644
index 0000000..dd53d3d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_2addr.d;
+
+public class T_ushr_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d
new file mode 100644
index 0000000..d7be0ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_2.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       move v1, v2
+       const-wide v2, 12345.0
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d
new file mode 100644
index 0000000..a7e8263
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_3.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.limit regs 4
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d
new file mode 100644
index 0000000..330ce0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_4.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int/2addr  v1, v0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d
new file mode 100644
index 0000000..d5906eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_5.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.java
new file mode 100644
index 0000000..3e1776c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_2addr.d;
+
+public class T_ushr_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d
new file mode 100644
index 0000000..0e3753c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_6.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int/2addr v1, v3
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/Test_ushr_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/Test_ushr_int_lit8.java
new file mode 100644
index 0000000..99b3ac9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/Test_ushr_int_lit8.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_1;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_13;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_2;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_3;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_4;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_5;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_6;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_7;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_8;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_9;
+
+
+public class Test_ushr_int_lit8 extends DxTestCase {
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_ushr_int_lit8_1 t = new T_ushr_int_lit8_1();
+        assertEquals(7, t.run());
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_ushr_int_lit8_2 t = new T_ushr_int_lit8_2();
+        assertEquals(8, t.run());
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_ushr_int_lit8_3 t = new T_ushr_int_lit8_3();
+        assertEquals(0x7FFFFFF8, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_int_lit8_4 t = new T_ushr_int_lit8_4();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ushr_int_lit8_5 t = new T_ushr_int_lit8_5();
+        assertEquals(16, t.run());
+    }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float >>> ) makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_ushr_int_lit8_13 t = new  T_ushr_int_lit8_13();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_int_lit8_6 t = new T_ushr_int_lit8_6();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_int_lit8_7 t = new T_ushr_int_lit8_7();
+        assertEquals(0x3FFFFFFF, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_int_lit8_8 t = new T_ushr_int_lit8_8();
+        assertEquals(0x40000000, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_int_lit8_9 t = new T_ushr_int_lit8_9();
+        assertEquals(1, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d
new file mode 100644
index 0000000..3d6d12d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_1.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 15
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.java
new file mode 100644
index 0000000..35f5305
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_1 {
+
+    public int run() {
+        return 15 >>> 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d
new file mode 100644
index 0000000..66e89fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_10.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_10
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v0, 12345456788.0
+       ushr-int/lit8 v1, v0, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d
new file mode 100644
index 0000000..d0b5a53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_11.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_11
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+       const-wide v0, 12345456788
+       ushr-int/lit8 v1, v0, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d
new file mode 100644
index 0000000..9925d72
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_12.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_12
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 2
+
+       ushr-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d
new file mode 100644
index 0000000..431983f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_13.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_13
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 3
+
+       ushr-int/lit8 v1, v2, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.java
new file mode 100644
index 0000000..42f09dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_13 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d
new file mode 100644
index 0000000..7bf0d26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_14.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_14
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 3
+
+       ushr-int/lit8 v1, v3, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d
new file mode 100644
index 0000000..2727421
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_2.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 33
+       ushr-int/lit8 v1, v1, 2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.java
new file mode 100644
index 0000000..8ef472e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_2 {
+
+    public int run() {
+        return 32 >>> 2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d
new file mode 100644
index 0000000..d51d0ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_3.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, -15
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.java
new file mode 100644
index 0000000..0917deb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_3 {
+
+    public int run() {
+        return -15 >>> 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d
new file mode 100644
index 0000000..c69a8cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_4.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 1
+       ushr-int/lit8 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.java
new file mode 100644
index 0000000..e0224f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_4 {
+
+    public int run() {
+        return 1 >>> -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d
new file mode 100644
index 0000000..9e75732
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_5.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 33
+       ushr-int/lit8 v1, v1, 33
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.java
new file mode 100644
index 0000000..b1d83aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_5 {
+
+    public int run() {
+        return 33 >>> 33;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d
new file mode 100644
index 0000000..8387c15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_6.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_6
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 0
+       ushr-int/lit8 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.java
new file mode 100644
index 0000000..548014a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_6 {
+
+    public int run() {
+        return 0 >>> -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d
new file mode 100644
index 0000000..1a49829
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_7.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.java
new file mode 100644
index 0000000..1e0b00f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_7 {
+
+    public int run() {
+        return Integer.MAX_VALUE >>> 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d
new file mode 100644
index 0000000..415d6d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_8.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483648
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.java
new file mode 100644
index 0000000..6e6a65e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_8 {
+
+    public int run() {
+        return Integer.MIN_VALUE >>> 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d
new file mode 100644
index 0000000..34be720
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_9.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_9
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 1
+       ushr-int/lit8 v1, v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.java
new file mode 100644
index 0000000..a69257a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_9 {
+
+    public int run() {
+        return 1 >>> 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/Test_ushr_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/Test_ushr_long.java
new file mode 100644
index 0000000..338d067
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/Test_ushr_long.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_long.d.T_ushr_long_1;
+import dot.junit.opcodes.ushr_long.d.T_ushr_long_2;
+
+public class Test_ushr_long extends DxTestCase {
+    /**
+     * @title Arguments = 40000000000l, 3
+     */
+    public void testN1() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 1
+     */
+    public void testN3() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0x7FFFFFFFFC521975l, t.run(-123456789l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 64
+     */
+    public void testN5() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(123456789l, t.run(123456789l, 64));
+    }
+    
+    /**
+     * @title Arguments = 123456789l, 63
+     */
+    public void testN6() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0l, t.run(123456789l, 63));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double >>> int) makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_ushr_long_2 t = new T_ushr_long_2();
+        try {
+            t.run(3.14d, 1);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0x4000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d
new file mode 100644
index 0000000..5479c4e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_1.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.java
new file mode 100644
index 0000000..1b2517e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long.d;
+
+public class T_ushr_long_1 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d
new file mode 100644
index 0000000..e8a6322
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 6
+
+       ushr-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.java
new file mode 100644
index 0000000..e278f8a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long.d;
+
+public class T_ushr_long_2 {
+
+    public long run(double b, int i) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d
new file mode 100644
index 0000000..1a7a9eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_3.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       move v2, v3
+       ushr-long v1, v2, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d
new file mode 100644
index 0000000..03ae1aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_4.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 6
+
+       const v0, 12345.0
+       ushr-long v0, v0, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d
new file mode 100644
index 0000000..05560ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_5.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long v1, v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d
new file mode 100644
index 0000000..6e7d40a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_6.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long v1, v1, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d
new file mode 100644
index 0000000..d2f672b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_7.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 6
+
+       ushr-long v1, v2, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/Test_ushr_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/Test_ushr_long_2addr.java
new file mode 100644
index 0000000..72747f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/Test_ushr_long_2addr.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_1;
+import dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_2;
+
+public class Test_ushr_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments =  40000000000l, 3
+     */
+    public void testN1() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 1
+     */
+    public void testN3() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0x7FFFFFFFFC521975l, t.run(-123456789l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 64
+     */
+    public void testN5() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(123456789l, t.run(123456789l, 64));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 63
+     */
+    public void testN6() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0l, t.run(123456789l, 63));
+    }
+
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double >>> int) makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_ushr_long_2addr_2 t = new T_ushr_long_2addr_2();
+        try {
+            t.run(3.14d, 1);
+        } catch (Throwable e) {
+        }
+    } 
+
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0x4000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d
new file mode 100644
index 0000000..4b154c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_1.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.java
new file mode 100644
index 0000000..142cda3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long_2addr.d;
+
+public class T_ushr_long_2addr_1 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d
new file mode 100644
index 0000000..22a3e6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_2.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 6
+
+       ushr-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.java
new file mode 100644
index 0000000..af70b1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long_2addr.d;
+
+public class T_ushr_long_2addr_2 {
+
+    public long run(double a, int b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d
new file mode 100644
index 0000000..c76441e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_3.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       move v0, v3
+       ushr-long/2addr v0, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d
new file mode 100644
index 0000000..4f03522
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_4.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       const v1, 12345.0
+       ushr-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d
new file mode 100644
index 0000000..12e930c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_5.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long/2addr v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d
new file mode 100644
index 0000000..0d1898a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_6.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long/2addr v1, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d
new file mode 100644
index 0000000..b645617
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_7.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 6
+
+       ushr-long/2addr v2, v4
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/Test_xor_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/Test_xor_int.java
new file mode 100644
index 0000000..8d976ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/Test_xor_int.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int.d.T_xor_int_1;
+import dot.junit.opcodes.xor_int.d.T_xor_int_5;
+
+public class Test_xor_int extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_1 t = new T_xor_int_1();
+         assertEquals(7, t.run(15, 8));
+    }
+    
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+         T_xor_int_1 t = new T_xor_int_1();
+         assertEquals(9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe, -1
+     */
+    public void testN3() {
+         T_xor_int_1 t = new T_xor_int_1();
+         assertEquals(0xFFFF3501, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int ^ float) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_int_5 t = new  T_xor_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_1 t = new T_xor_int_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_1 t = new T_xor_int_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+    
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - long, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int.d.T_xor_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int.d.T_xor_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int.d.T_xor_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d
new file mode 100644
index 0000000..2c2fbfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_1.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.java
new file mode 100644
index 0000000..75f5df4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int.d;
+
+public class T_xor_int_1 {
+
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d
new file mode 100644
index 0000000..339a3e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       move v1, v2 
+       const-wide/16 v2, 12345
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d
new file mode 100644
index 0000000..b733277
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_3.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int v1, v1, v0
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d
new file mode 100644
index 0000000..879afe5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_5.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.java
new file mode 100644
index 0000000..5c50e59
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int.d;
+
+public class T_xor_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d
new file mode 100644
index 0000000..0768d87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_6.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int v1, v1, v3
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/Test_xor_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/Test_xor_int_2addr.java
new file mode 100644
index 0000000..630bf5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/Test_xor_int_2addr.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_1;
+import dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_4;
+
+public class Test_xor_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+         assertEquals(7, t.run(15, 8));
+    }
+    
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+         T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+         assertEquals(9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe, -1
+     */
+    public void testN3() {
+         T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+         assertEquals(0xFFFF3501, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int ^ float) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_int_2addr_4 t = new  T_xor_int_2addr_4();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d
new file mode 100644
index 0000000..561db60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2addr_1.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.java
new file mode 100644
index 0000000..2d4a699
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_2addr.d;
+
+public class T_xor_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d
new file mode 100644
index 0000000..7d19a9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2addr_2.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide/16 v2, 12345
+       xor-int/2addr v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d
new file mode 100644
index 0000000..f51a717
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2addr_3.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int/2addr v1, v0
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d
new file mode 100644
index 0000000..cc64eb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2addr_4.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       xor-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.java
new file mode 100644
index 0000000..f779ebc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_2addr.d;
+
+public class T_xor_int_2addr_4 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d
new file mode 100644
index 0000000..5430394
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2addr_5.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/Test_xor_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/Test_xor_int_lit16.java
new file mode 100644
index 0000000..e31a49c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/Test_xor_int_lit16.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_1;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_2;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_3;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_4;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_7;
+
+public class Test_xor_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_lit16_1 t = new T_xor_int_lit16_1();
+         assertEquals(7, t.run());
+     }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfff1
+     */
+    public void testN2() {
+         T_xor_int_lit16_2 t = new T_xor_int_lit16_2();
+         assertEquals(9, t.run());
+     }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float ^ int) makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_xor_int_lit16_7 t = new T_xor_int_lit16_7();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_lit16_3 t = new T_xor_int_lit16_3();
+            assertEquals(-1, t.run());
+    }
+
+    /** 
+     * @title Arguments = Integer.MAX_VALUE, Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_lit16_4 t = new T_xor_int_lit16_4();
+            assertEquals(-2147450881, t.run());
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d
new file mode 100644
index 0000000..ba07a33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_1.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 15
+       xor-int/lit16 v1, v1, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.java
new file mode 100644
index 0000000..bff43df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_1 {
+
+    public int run() {
+        return 15 ^ 8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d
new file mode 100644
index 0000000..6b5a110
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_2.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v2, -8
+       xor-int/lit16 v1, v2, -15
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.java
new file mode 100644
index 0000000..938a23d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_2 {
+
+    public int run() {
+        return 0xfffffff8 ^ 0xfff1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d
new file mode 100644
index 0000000..56f0458
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_3.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       xor-int/lit16 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.java
new file mode 100644
index 0000000..2bc9c62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_3 {
+
+    public int run() {
+        return 0 ^ -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d
new file mode 100644
index 0000000..ec92408
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_4.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       xor-int/lit16 v1, v1, -32768
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.java
new file mode 100644
index 0000000..6626871
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_4 {
+
+    public int run() {
+        return Integer.MAX_VALUE ^ Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d
new file mode 100644
index 0000000..a0906e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_5.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide/16 v2, 12345
+       xor-int/lit16 v1, v2, -32768
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d
new file mode 100644
index 0000000..5aa6343
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_6.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 1
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d
new file mode 100644
index 0000000..ea16bae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_7.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.java
new file mode 100644
index 0000000..d7b747e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_7 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d
new file mode 100644
index 0000000..5d8cb85
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_8.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 3
+
+       xor-int/lit16 v1, v3, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/Test_xor_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/Test_xor_int_lit8.java
new file mode 100644
index 0000000..e06d5e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/Test_xor_int_lit8.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_1;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_2;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_3;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_4;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_7;
+
+public class Test_xor_int_lit8 extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_lit8_1 t = new T_xor_int_lit8_1();
+         assertEquals(7, t.run());
+     }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xf1
+     */
+    public void testN2() {
+         T_xor_int_lit8_2 t = new T_xor_int_lit8_2();
+         assertEquals(9, t.run());
+     }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float ^ int) makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_xor_int_lit8_7 t = new T_xor_int_lit8_7();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_lit8_3 t = new T_xor_int_lit8_3();
+            assertEquals(-1, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Byte.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_lit8_4 t = new T_xor_int_lit8_4();
+            assertEquals(-2147483521, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - long, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d
new file mode 100644
index 0000000..cb4d830
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_1.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 15
+       xor-int/lit16 v1, v1, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.java
new file mode 100644
index 0000000..ff2c78b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_1 {
+
+    public int run() {
+        return 15 ^ 8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d
new file mode 100644
index 0000000..8d23bf6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_2.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v2, -8
+       xor-int/lit16 v1, v2, -15
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.java
new file mode 100644
index 0000000..d62fd56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_2 {
+
+    public int run() {
+        return 0xfffffff8 ^ 0xf1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d
new file mode 100644
index 0000000..5953574
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_3.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       xor-int/lit16 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.java
new file mode 100644
index 0000000..31fa48c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_3 {
+
+    public int run() {
+        return 0 ^ -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d
new file mode 100644
index 0000000..c2270c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_4.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       xor-int/lit16 v1, v1, -128
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.java
new file mode 100644
index 0000000..6b2d4f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_4 {
+
+    public int run() {
+        return Integer.MAX_VALUE ^ Byte.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d
new file mode 100644
index 0000000..3a3da2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_5.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide/16 v2, 12345
+       xor-int/lit8 v1, v2, -128
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d
new file mode 100644
index 0000000..b3ab7e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_6.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 1
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d
new file mode 100644
index 0000000..74bf7e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_7.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.java
new file mode 100644
index 0000000..ecd3130
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_7 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d
new file mode 100644
index 0000000..0857ea6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_8.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 3
+
+       xor-int/lit16 v1, v3, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/Test_xor_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/Test_xor_long.java
new file mode 100644
index 0000000..dac7041
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/Test_xor_long.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_long.d.T_xor_long_1;
+import dot.junit.opcodes.xor_long.d.T_xor_long_2;
+
+public class Test_xor_long extends DxTestCase {
+    /**
+     * @title Arguments = 23423432423777l, 23423432423778l
+     */
+    public void testN1() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(3, t.run(23423432423777l, 23423432423778l));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff5, 0xfffffff1
+     */
+    public void testN2() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(4, t.run(0xfffffff5, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEFAB & -1
+     */
+    public void testN3() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(0x54321054, t.run(0xABCDEFAB, -1l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double ^ long ) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_long_2 t = new T_xor_long_2();
+        try {
+            t.run(3.14d, 1234l);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(0xffffffff, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MAX_VALUE
+     */
+    public void testB3() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - float, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d
new file mode 100644
index 0000000..fb345ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_1.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.java
new file mode 100644
index 0000000..9389b63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long.d;
+
+public class T_xor_long_1 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d
new file mode 100644
index 0000000..52f7815
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)J
+.limit regs 5
+
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.java
new file mode 100644
index 0000000..64a5a9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long.d;
+
+public class T_xor_long_2 {
+
+    public long run(double a, long b) {
+        return 0; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d
new file mode 100644
index 0000000..2042970
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_3.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const/16 v3, 1234    
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d
new file mode 100644
index 0000000..28e9fff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_4.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const v3, 1234.0
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d
new file mode 100644
index 0000000..a48545f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_5.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long v1, v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d
new file mode 100644
index 0000000..0e2c18f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_6.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long v1, v1, v5
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/Test_xor_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/Test_xor_long_2addr.java
new file mode 100644
index 0000000..8e4a4bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/Test_xor_long_2addr.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_1;
+import dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_2;
+
+public class Test_xor_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 23423432423777l, 23423432423778l
+     */
+    public void testN1() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(3, t.run(23423432423777l, 23423432423778l));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff5, 0xfffffff1
+     */
+    public void testN2() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(4, t.run(0xfffffff5, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEFAB & -1
+     */
+    public void testN3() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(0x54321054, t.run(0xABCDEFAB, -1l));
+    }
+
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double ^ long ) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_long_2addr_2 t = new T_xor_long_2addr_2();
+        try {
+            t.run(3.14d, 1234l);
+        } catch (Throwable e) {
+        }
+    } 
+
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(0xffffffff, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MAX_VALUE
+     */
+    public void testB3() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title  (number of registers).
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - float, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d
new file mode 100644
index 0000000..7d84e33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_1.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.java
new file mode 100644
index 0000000..f146b32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long_2addr.d;
+
+public class T_xor_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d
new file mode 100644
index 0000000..977ce09
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_2.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.java
new file mode 100644
index 0000000..dfa4c0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long_2addr.d;
+
+public class T_xor_long_2addr_2 {
+
+    public long run(double a, long b) {
+        return 0; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d
new file mode 100644
index 0000000..d578efe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_3.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const/16 v3, 1234    
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d
new file mode 100644
index 0000000..98c0cd8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_4.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const v3, 1234.0
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d
new file mode 100644
index 0000000..a69d6ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_5.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d
new file mode 100644
index 0000000..2533783
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_6.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v5
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/AllTests.java b/tools/vm-tests-tf/src/dot/junit/verify/AllTests.java
new file mode 100644
index 0000000..b4314f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/AllTests.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for dalvik vm: test that "
+                + "structurally damaged files are rejected by the verifier");
+        suite.addTestSuite(dot.junit.verify.a1.Test_a1.class);
+        suite.addTestSuite(dot.junit.verify.a3.Test_a3.class);
+        suite.addTestSuite(dot.junit.verify.a5.Test_a5.class);
+        suite.addTestSuite(dot.junit.verify.b2.Test_b2.class);
+        suite.addTestSuite(dot.junit.verify.b3.Test_b3.class);
+        suite.addTestSuite(dot.junit.verify.b17.Test_b17.class);
+
+        return suite;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a1/Test_a1.java b/tools/vm-tests-tf/src/dot/junit/verify/a1/Test_a1.java
new file mode 100644
index 0000000..bf8f35e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a1/Test_a1.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008  The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a1;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_a1 extends DxTestCase {
+
+    /**
+     * @constraint A1
+     *
+     * @title empty insns array
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.a1.d.T_a1_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.d b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.d
new file mode 100644
index 0000000..fae89bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.d
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_a1_1.java
+.class public dot.junit.verify.a1.d.T_a1_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.dfh b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.dfh
new file mode 100644
index 0000000..2c11f5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.dfh
@@ -0,0 +1,237 @@
+// Processing 'out/classes_dasm/dot/junit/verify/a1/d/T_a1_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/verify/a1/d/T_a1_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : fa4f3449
+    49 34 4F FA 
+// parsed: offset 12, len 20: signature           : ea5e...e61c
+    EA 5E DC 6D AF F0 4E 0F CA BF 0E 8F FE 43 DE 4F 78 5B E6 1C 
+// parsed: offset 32, len 4: file_size           : 480
+    E0 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 356 (0x000164)
+    64 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 264
+    08 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 260 (0x000104) "<init>"
+    04 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 268 (0x00010c) "Ldot/junit/verify/a1/d/T_a1_1;"
+    0C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 300 (0x00012c) "Ljava/lang/Object;"
+    2C 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "T_a1_1.java"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 333 (0x00014d) "V"
+    4D 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 336 (0x000150) "run"
+    50 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/verify/a1/d/T_a1_1;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/verify/a1/d/T_a1_1;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_b1_1.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 341 (0x000155)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 55 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.verify.a1.d.T_a1_1.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.verify.a1.d.T_a1_1.run"
+    // parsed: offset 240, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 1
+//@mod        01 00 00 00 
+        00 00 00 00 
+    // insns:
+        // parsed: offset 256, len 2: |0000: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 258, len 2: PADDING
+    00 00 
+// parsed: offset 260, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 268, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/verify/a1/d/T_a1_1;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 76 65 72 69 66 79 2F 61 31 2F 64 2F 54 5F 61 31 5F 31 3B 00 
+// parsed: offset 300, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 320, len 13: TYPE_STRING_DATA_ITEM [3] "T_a1_1.java"
+    0B 54 5F 61 31 5F 31 2E 6A 61 76 61 00 
+// parsed: offset 333, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 336, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/verify/a1/d/T_a1_1;"
+    // parsed: offset 341, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 342, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 343, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 344, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 345, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 346, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 349, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 351, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 352, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 353, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 355, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 356, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 360, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 372, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 384, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 396, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 408, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 420, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 432, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 444, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 260 (0x000104)
+        02 20 00 00 06 00 00 00 04 01 00 00 
+    // parsed: offset 456, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 341 (0x000155)
+        00 20 00 00 01 00 00 00 55 01 00 00 
+    // parsed: offset 468, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 356 (0x000164)
+        00 10 00 00 01 00 00 00 64 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_2.java b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_2.java
new file mode 100644
index 0000000..c7e6694
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a1.d;
+
+/**
+ *
+ */
+public class T_a1_2 {
+    // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a3/Test_a3.java b/tools/vm-tests-tf/src/dot/junit/verify/a3/Test_a3.java
new file mode 100644
index 0000000..94d5cb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a3/Test_a3.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a3;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_a3 extends DxTestCase {
+
+    /**
+     * @constraint A3
+     * 
+     * @title The insns array must only contain valid Dalvik opcodes. 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.a3.d.T_a3_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.d b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.d
new file mode 100644
index 0000000..0f8d599
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_a3_1.java
+.class public dot.junit.verify.a3.d.T_a3_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+    nop
+    nop
+    nop
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.dfh b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.dfh
new file mode 100644
index 0000000..0ca04de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.dfh
@@ -0,0 +1,241 @@
+// Processing 'out/classes_dasm/dot/junit/verify/a3/d/T_a3_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/verify/a3/d/T_a3_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : be8e34ae
+    AE 34 8E BE 
+// parsed: offset 12, len 20: signature           : 816e...af7b
+    81 6E 56 5F D0 A5 2E 3F EC 43 2E 24 E4 3D F9 E8 F6 F5 AF 7B 
+// parsed: offset 32, len 4: file_size           : 484
+    E4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 360 (0x000168)
+    68 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 268
+    0C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 264 (0x000108) "<init>"
+    08 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 272 (0x000110) "Ldot/junit/verify/a3/d/T_a3_1;"
+    10 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 304 (0x000130) "Ljava/lang/Object;"
+    30 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 324 (0x000144) "T_a3_1.java"
+    44 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 337 (0x000151) "V"
+    51 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 340 (0x000154) "run"
+    54 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/verify/a3/d/T_a3_1;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/verify/a3/d/T_a3_1;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_a3_1.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 345 (0x000159)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 59 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.verify.a3.d.T_a3_1.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.verify.a3.d.T_a3_1.run"
+    // parsed: offset 240, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 2: |0000: nop // spacer
+//@mod            00 00         
+            FF FF 
+        // parsed: offset 258, len 2: |0001: nop // spacer
+            00 00 
+        // parsed: offset 260, len 2: |0002: nop // spacer
+            00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 264, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 272, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/verify/a3/d/T_a3_1;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 76 65 72 69 66 79 2F 61 33 2F 64 2F 54 5F 61 33 5F 31 3B 00 
+// parsed: offset 304, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 324, len 13: TYPE_STRING_DATA_ITEM [3] "T_a3_1.java"
+    0B 54 5F 61 33 5F 31 2E 6A 61 76 61 00 
+// parsed: offset 337, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 340, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/verify/a3/d/T_a3_1;"
+    // parsed: offset 345, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 346, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 347, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 348, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 349, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 350, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 353, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 355, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 356, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 357, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 359, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 360, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 364, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 376, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 388, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 400, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 412, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 424, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 436, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 448, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 264 (0x000108)
+        02 20 00 00 06 00 00 00 08 01 00 00 
+    // parsed: offset 460, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 345 (0x000159)
+        00 20 00 00 01 00 00 00 59 01 00 00 
+    // parsed: offset 472, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 360 (0x000168)
+        00 10 00 00 01 00 00 00 68 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_2.java b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_2.java
new file mode 100644
index 0000000..9e5fbad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a3.d;
+
+/**
+ *
+ */
+public class T_a3_2 {
+    // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a5/Test_a5.java b/tools/vm-tests-tf/src/dot/junit/verify/a5/Test_a5.java
new file mode 100644
index 0000000..e821028
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a5/Test_a5.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a5;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_a5 extends DxTestCase {
+
+    /**
+     * @constraint A5
+     * 
+     * @title The last instruction in the insns array must end at index insns_size-1.  
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.a5.d.T_a5_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.d b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.d
new file mode 100644
index 0000000..898e900
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_a5_1.java
+.class public dot.junit.verify.a5.d.T_a5_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+    nop
+    nop
+    nop
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.dfh b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.dfh
new file mode 100644
index 0000000..a35f00e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.dfh
@@ -0,0 +1,241 @@
+// Processing 'out/classes_dasm/dot/junit/verify/a5/d/T_a5_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/verify/a5/d/T_a5_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 1acf344e
+    4E 34 CF 1A 
+// parsed: offset 12, len 20: signature           : 60c2...28af
+    60 C2 30 F0 A8 17 C1 F1 B9 47 0E D8 9D BD C6 0B E9 34 28 AF 
+// parsed: offset 32, len 4: file_size           : 484
+    E4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 360 (0x000168)
+    68 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 268
+    0C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 264 (0x000108) "<init>"
+    08 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 272 (0x000110) "Ldot/junit/verify/a5/d/T_a5_1;"
+    10 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 304 (0x000130) "Ljava/lang/Object;"
+    30 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 324 (0x000144) "T_a5_1.java"
+    44 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 337 (0x000151) "V"
+    51 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 340 (0x000154) "run"
+    54 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/verify/a5/d/T_a5_1;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/verify/a5/d/T_a5_1;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_a5_1.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 345 (0x000159)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 59 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.verify.a5.d.T_a5_1.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.verify.a5.d.T_a5_1.run"
+    // parsed: offset 240, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+//@mod        04 00 00 00 
+        05 00 00 00 
+    // insns:
+        // parsed: offset 256, len 2: |0000: nop // spacer
+            00 00 
+        // parsed: offset 258, len 2: |0001: nop // spacer
+            00 00 
+        // parsed: offset 260, len 2: |0002: nop // spacer
+            00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 264, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 272, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/verify/a5/d/T_a5_1;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 76 65 72 69 66 79 2F 61 35 2F 64 2F 54 5F 61 35 5F 31 3B 00 
+// parsed: offset 304, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 324, len 13: TYPE_STRING_DATA_ITEM [3] "T_a5_1.java"
+    0B 54 5F 61 35 5F 31 2E 6A 61 76 61 00 
+// parsed: offset 337, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 340, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/verify/a5/d/T_a5_1;"
+    // parsed: offset 345, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 346, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 347, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 348, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 349, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 350, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 353, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 355, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 356, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 357, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 359, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 360, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 364, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 376, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 388, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 400, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 412, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 424, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 436, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 448, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 264 (0x000108)
+        02 20 00 00 06 00 00 00 08 01 00 00 
+    // parsed: offset 460, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 345 (0x000159)
+        00 20 00 00 01 00 00 00 59 01 00 00 
+    // parsed: offset 472, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 360 (0x000168)
+        00 10 00 00 01 00 00 00 68 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_2.java b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_2.java
new file mode 100644
index 0000000..5f99d46
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a5.d;
+
+/**
+ *
+ */
+public class T_a5_2 {
+    // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b17/Test_b17.java b/tools/vm-tests-tf/src/dot/junit/verify/b17/Test_b17.java
new file mode 100644
index 0000000..4c14f08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b17/Test_b17.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b17;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_b17 extends DxTestCase {
+
+    /**
+     * Having throw, return and backward goto as a last opcode in the method is tested
+     * as part of corresponding opcodes tests.
+     */
+    
+    /**
+     * @constraint B17
+     * 
+     * @title attempt to leave insns array without return or throw.
+     * Since this constraint is trivial to be checked by the verifier,
+     * it is sufficient to have a trivial test.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.b17.d.T_b17_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.d b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.d
new file mode 100644
index 0000000..11715c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b17_1.java
+.class public dot.junit.verify.b17.d.T_b17_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+
+       const/16 v0, 123 
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_2.java b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_2.java
new file mode 100644
index 0000000..d1745e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b17.d;
+
+/**
+ *
+ */
+public class T_b17_2 {
+    // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/Test_b2.java b/tools/vm-tests-tf/src/dot/junit/verify/b2/Test_b2.java
new file mode 100644
index 0000000..55ea386
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/Test_b2.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b2;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_b2 extends DxTestCase {
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.d
new file mode 100644
index 0000000..1fe908a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b2_1.java
+.class public dot.junit.verify.b2.d.T_b2_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 123
+       move v1, v0 ; illegal read access to v1
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.java b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.java
new file mode 100644
index 0000000..9ca108e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b2.d;
+
+public class T_b2_1 {
+    public void run() {
+        long a = 123;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.d
new file mode 100644
index 0000000..a885c41
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b2_2.java
+.class public dot.junit.verify.b2.d.T_b2_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 123 
+       move v0, v1 ; // illegal read access to v0
+       return-void
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.d
new file mode 100644
index 0000000..bf8d6e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b2_3.java
+.class public dot.junit.verify.b2.d.T_b2_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const v0, 123 
+       const v1, 123 
+       move-wide v2, v0 ; // illegal read access to v0/1
+       return-void
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.d
new file mode 100644
index 0000000..bb158ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b2_4.java
+.class public dot.junit.verify.b2.d.T_b2_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v0, 123
+       move v2, v0 ; // illegal read access to v0
+       return-void
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.d
new file mode 100644
index 0000000..483066d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b2_5.java
+.class public dot.junit.verify.b2.d.T_b2_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const-wide v0, 123
+       move-wide v2, v0
+       move-wide v2, v1 ; // illegal read access to v1/2
+       return-void
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b3/Test_b3.java b/tools/vm-tests-tf/src/dot/junit/verify/b3/Test_b3.java
new file mode 100644
index 0000000..1aefb11
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b3/Test_b3.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b3;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_b3 extends DxTestCase {
+
+    /**
+     * @constraint B3
+     * @title register (or pair) has to be assigned first before it can be read. 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.b3.d.T_b3_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B3
+     * @title register (or pair) has to be assigned first before it can be read. 
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.verify.b3.d.T_b3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_0.java b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_0.java
new file mode 100644
index 0000000..0f0a5ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_0.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b3.d;
+
+/**
+*
+*/
+public class T_b3_0 {
+   // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.d b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.d
new file mode 100644
index 0000000..ffcd819
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b3_1.java
+.class public dot.junit.verify.b3.d.T_b3_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       move v2, v1
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.d b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.d
new file mode 100644
index 0000000..96feb07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b3_2.java
+.class public dot.junit.verify.b3.d.T_b3_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 10
+
+       const-wide v0, 123
+       long-to-int v3, v1
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java b/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
new file mode 100644
index 0000000..f584687
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
@@ -0,0 +1,814 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import com.android.dx.util.FileUtils;
+
+import dot.junit.AllTests;
+
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Scanner;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Map.Entry;
+import java.util.regex.MatchResult;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Main class to generate data from the test suite to later run from a shell
+ * script. the project's home folder.<br>
+ * <project-home>/src must contain the java sources<br>
+ * <project-home>/data/scriptdata will be generated<br>
+ * <project-home>/src/<for-each-package>/Main_testN1.java will be generated<br>
+ * (one Main class for each test method in the Test_... class
+ */
+public class BuildDalvikSuite {
+
+    public static boolean DEBUG = true;
+
+    private static String JAVASRC_FOLDER = "";
+    private static String MAIN_SRC_OUTPUT_FOLDER = "";
+
+    // the folder for the generated junit-files for the cts host (which in turn
+    // execute the real vm tests using adb push/shell etc)
+    private static String HOSTJUNIT_SRC_OUTPUT_FOLDER = "";
+    private static String OUTPUT_FOLDER = "";
+    private static String COMPILED_CLASSES_FOLDER = "";
+
+    private static String CLASSES_OUTPUT_FOLDER = "";
+    private static String HOSTJUNIT_CLASSES_OUTPUT_FOLDER = "";
+
+    private static String CLASS_PATH = "";
+
+    private static String restrictTo = null; // e.g. restrict to
+    // "opcodes.add_double"
+
+    private static final String TARGET_JAR_ROOT_PATH = "/data/local/tmp/vm-tests";
+
+    private int testClassCnt = 0;
+    private int testMethodsCnt = 0;
+
+    /*
+     * using a linked hashmap to keep the insertion order for iterators.
+     * the junit suite/tests adding order is used to generate the order of the
+     * report.
+     * a map. key: fully qualified class name, value: a list of test methods for
+     * the given class
+     */
+    private LinkedHashMap<String, List<String>> map = new LinkedHashMap<String,
+    List<String>>();
+
+    private class MethodData {
+        String methodBody, constraint, title;
+    }
+
+    /**
+     * @param args
+     *            args 0 must be the project root folder (where src, lib etc.
+     *            resides)
+     * @throws IOException
+     */
+    public static void main(String[] args) throws IOException {
+
+        if (args.length > 5) {
+            JAVASRC_FOLDER = args[0];
+            OUTPUT_FOLDER = args[1];
+            CLASS_PATH = args[2];
+            MAIN_SRC_OUTPUT_FOLDER = args[3];
+            CLASSES_OUTPUT_FOLDER = MAIN_SRC_OUTPUT_FOLDER + "/classes";
+
+            COMPILED_CLASSES_FOLDER = args[4];
+
+            HOSTJUNIT_SRC_OUTPUT_FOLDER = args[5];
+            HOSTJUNIT_CLASSES_OUTPUT_FOLDER = HOSTJUNIT_SRC_OUTPUT_FOLDER + "/classes";
+
+            if (args.length > 6) {
+                // optional: restrict to e.g. "opcodes.add_double"
+                restrictTo = args[6];
+                System.out.println("restricting build to: " + restrictTo);
+            }
+
+        } else {
+            System.out.println("usage: java-src-folder output-folder classpath " +
+                    "generated-main-files compiled_output generated-main-files " +
+            "[restrict-to-opcode]");
+            System.exit(-1);
+        }
+
+        long start = System.currentTimeMillis();
+        BuildDalvikSuite cat = new BuildDalvikSuite();
+        cat.compose();
+        long end = System.currentTimeMillis();
+
+        System.out.println("elapsed seconds: " + (end - start) / 1000);
+    }
+
+    public void compose() throws IOException {
+        System.out.println("Collecting all junit tests...");
+        new TestRunner() {
+            @Override
+            protected TestResult createTestResult() {
+                return new TestResult() {
+                    @Override
+                    protected void run(TestCase test) {
+                        addToTests(test);
+                    }
+
+                };
+            }
+        }.doRun(AllTests.suite());
+
+        // for each combination of TestClass and method, generate a Main_testN1
+        // etc.
+        // class in the respective package.
+        // for the report make sure all N... tests are called first, then B,
+        // then
+        // E, then VFE test methods.
+        // so we need x Main_xxxx methods in a package, and x entries in the
+        // global scriptdata file (read by a bash script for the tests)
+        // e.g. dxc.junit.opcodes.aaload.Test_aaload - testN1() ->
+        // File Main_testN1.java in package dxc.junit.opcodes.aaload
+        // and entry dxc.junit.opcodes.aaload.Main_testN1 in class execution
+        // table.
+        //
+        handleTests();
+    }
+
+    private void addToTests(TestCase test) {
+
+        String packageName = test.getClass().getPackage().getName();
+        packageName = packageName.substring(packageName.lastIndexOf('.'));
+
+
+        String method = test.getName(); // e.g. testVFE2
+        String fqcn = test.getClass().getName(); // e.g.
+        // dxc.junit.opcodes.iload_3.Test_iload_3
+
+        // ignore all tests not belonging to the given restriction
+        if (restrictTo != null && !fqcn.contains(restrictTo)) return;
+
+        testMethodsCnt++;
+        List<String> li = map.get(fqcn);
+        if (li == null) {
+            testClassCnt++;
+            li = new ArrayList<String>();
+            map.put(fqcn, li);
+        }
+        li.add(method);
+    }
+
+    private static final String ctsAllTestsB =
+        "package dot.junit;\n" +
+        "import junit.framework.Test;\n" +
+        "import junit.framework.TestSuite;\n" +
+        "import com.android.hosttest.DeviceTestSuite;\n" +
+        "\n" +
+        "public class AllJunitHostTests extends DeviceTestSuite {\n" +
+        "    public static final Test suite() {\n" +
+        "        TestSuite suite = new TestSuite(\"CTS Host tests for all " +
+        " dalvik vm opcodes\");\n";
+
+    private String curAllTestsData = ctsAllTestsB;
+    private String curJunitFileName = null;
+    private String curJunitFileData = "";
+
+    private JavacBuildStep javacHostJunitBuildStep;
+
+    private void flushHostJunitFile() {
+        if (curJunitFileName != null) {
+            File toWrite = new File(curJunitFileName);
+            String absPath = toWrite.getAbsolutePath();
+            // add to java source files for later compilation
+            javacHostJunitBuildStep.addSourceFile(absPath);
+            // write file
+            curJunitFileData += "\n}\n";
+            writeToFileMkdir(toWrite, curJunitFileData);
+            curJunitFileName = null;
+            curJunitFileData = "";
+        }
+    }
+
+    private void ctsFinish() {
+        flushHostJunitFile();
+        curAllTestsData += "return suite;\n}\n}\n";
+        // suite is in package dot.junit.
+        String allTestsFileName = HOSTJUNIT_SRC_OUTPUT_FOLDER + "/dot/junit/AllJunitHostTests.java";
+        File toWrite = new File(allTestsFileName);
+        writeToFileMkdir(toWrite, curAllTestsData);
+        javacHostJunitBuildStep.addSourceFile(toWrite.getAbsolutePath());
+        javacHostJunitBuildStep.addSourceFile(new File(
+                HOSTJUNIT_SRC_OUTPUT_FOLDER + "/dot/junit/DeviceUtil.java").
+                getAbsolutePath());
+    }
+
+    private void openCTSHostFileFor(String pName, String classOnlyName) {
+        String sourceName = "JUnit_" + classOnlyName;
+        // Add to AllTests.java
+        String suiteline = "suite.addTestSuite(" + pName + "." + sourceName +
+        ".class);\n";
+        curAllTestsData += suiteline;
+        // flush previous JunitFile
+        flushHostJunitFile();
+
+        // prepare current testcase-file
+        curJunitFileName = HOSTJUNIT_SRC_OUTPUT_FOLDER + "/" + pName.replaceAll("\\.","/") + "/" +
+        sourceName + ".java";
+        curJunitFileData = getWarningMessage() +
+        "package " + pName + ";\n" +
+        "import java.io.IOException;\n" +
+        "import junit.framework.TestCase;\n" +
+        "import com.android.hosttest.DeviceTestCase;\n" +
+        "import dot.junit.DeviceUtil;\n" +
+        "\n" +
+        "public class " + sourceName + " extends DeviceTestCase {\n";
+    }
+
+    private String getADBExecJavaLine(String classpath, String mainclass) {
+        return "DeviceUtil.adbExec(getDevice(), \"" + TARGET_JAR_ROOT_PATH + "\", \"" + classpath +
+        "\", \"" + mainclass + "\");";
+    }
+
+    private String getWarningMessage() {
+        return "//Autogenerated code by " + this.getClass().getName() + "; do not edit.\n";
+    }
+
+    private void addCTSHostMethod(String pName, String method, MethodData md,
+            Set<String> dependentTestClassNames) {
+        curJunitFileData += "public void " + method + "() throws Exception {\n";
+        final String targetCoreJarPath = String.format("%s/dot/junit/dexcore.jar",
+                TARGET_JAR_ROOT_PATH);
+
+        // push class with Main jar.
+        String mjar = "Main_" + method + ".jar";
+        String pPath = pName.replaceAll("\\.","/");
+        String mainJar = String.format("%s/%s/%s", TARGET_JAR_ROOT_PATH, pPath, mjar);
+
+        // for each dependency:
+        // adb push dot/junit/opcodes/add_double_2addr/Main_testN2.jar
+        // /data/local/tmp/Main_testN2.jar
+        String cp = String.format("%s:%s", targetCoreJarPath, mainJar);
+        for (String depFqcn : dependentTestClassNames) {
+            int lastDotPos = depFqcn.lastIndexOf('.');
+            String sourceName = depFqcn.replaceAll("\\.", "/") + ".jar";
+            String targetName= String.format("%s/%s", TARGET_JAR_ROOT_PATH,
+                    sourceName);
+            cp += ":" + targetName;
+            // dot.junit.opcodes.invoke_interface_range.ITest
+            // -> dot/junit/opcodes/invoke_interface_range/ITest.jar
+        }
+
+        //"dot.junit.opcodes.add_double_2addr.Main_testN2";
+        String mainclass = pName + ".Main_" + method;
+        curJunitFileData += "    " + getADBExecJavaLine(cp, mainclass);
+        curJunitFileData += "}\n\n";
+    }
+
+    private void handleTests() throws IOException {
+        System.out.println("collected " + testMethodsCnt + " test methods in " +
+                testClassCnt + " junit test classes");
+        String datafileContent = "";
+        Set<BuildStep> targets = new TreeSet<BuildStep>();
+
+        javacHostJunitBuildStep = new JavacBuildStep(HOSTJUNIT_CLASSES_OUTPUT_FOLDER, CLASS_PATH);
+
+
+        JavacBuildStep javacBuildStep = new JavacBuildStep(
+                CLASSES_OUTPUT_FOLDER, CLASS_PATH);
+
+        for (Entry<String, List<String>> entry : map.entrySet()) {
+
+            String fqcn = entry.getKey();
+            int lastDotPos = fqcn.lastIndexOf('.');
+            String pName = fqcn.substring(0, lastDotPos);
+            String classOnlyName = fqcn.substring(lastDotPos + 1);
+            String instPrefix = "new " + classOnlyName + "()";
+
+            openCTSHostFileFor(pName, classOnlyName);
+
+            List<String> methods = entry.getValue();
+            Collections.sort(methods, new Comparator<String>() {
+                public int compare(String s1, String s2) {
+                    // TODO sort according: test ... N, B, E, VFE
+                    return s1.compareTo(s2);
+                }
+            });
+            for (String method : methods) {
+                // e.g. testN1
+                if (!method.startsWith("test")) {
+                    throw new RuntimeException("no test method: " + method);
+                }
+
+                // generate the Main_xx java class
+
+                // a Main_testXXX.java contains:
+                // package <packagenamehere>;
+                // public class Main_testxxx {
+                // public static void main(String[] args) {
+                // new dxc.junit.opcodes.aaload.Test_aaload().testN1();
+                // }
+                // }
+                MethodData md = parseTestMethod(pName, classOnlyName, method);
+                String methodContent = md.methodBody;
+
+                Set<String> dependentTestClassNames = parseTestClassName(pName,
+                        classOnlyName, methodContent);
+
+                addCTSHostMethod(pName, method, md, dependentTestClassNames);
+
+
+                if (dependentTestClassNames.isEmpty()) {
+                    continue;
+                }
+
+
+                String content = getWarningMessage() +
+                "package " + pName + ";\n" +
+                "import " + pName + ".d.*;\n" +
+                "import dot.junit.*;\n" +
+                "public class Main_" + method + " extends DxAbstractMain {\n" +
+                "    public static void main(String[] args) throws Exception {" +
+                methodContent + "\n}\n";
+
+                String fileName = getFileName(pName, method, ".java");
+                File sourceFile = getFileFromPackage(pName, method);
+
+                File classFile = new File(CLASSES_OUTPUT_FOLDER + "/" +
+                        getFileName(pName, method, ".class"));
+                // if (sourceFile.lastModified() > classFile.lastModified()) {
+                writeToFile(sourceFile, content);
+                javacBuildStep.addSourceFile(sourceFile.getAbsolutePath());
+
+                BuildStep dexBuildStep = generateDexBuildStep(
+                        CLASSES_OUTPUT_FOLDER, getFileName(pName, method, ""));
+                targets.add(dexBuildStep);
+                // }
+
+
+                // prepare the entry in the data file for the bash script.
+                // e.g.
+                // main class to execute; opcode/constraint; test purpose
+                // dxc.junit.opcodes.aaload.Main_testN1;aaload;normal case test
+                // (#1)
+
+                char ca = method.charAt("test".length()); // either N,B,E,
+                // or V (VFE)
+                String comment;
+                switch (ca) {
+                    case 'N':
+                        comment = "Normal #" + method.substring(5);
+                        break;
+                    case 'B':
+                        comment = "Boundary #" + method.substring(5);
+                        break;
+                    case 'E':
+                        comment = "Exception #" + method.substring(5);
+                        break;
+                    case 'V':
+                        comment = "Verifier #" + method.substring(7);
+                        break;
+                    default:
+                        throw new RuntimeException("unknown test abbreviation:" + method + " for " +
+                                fqcn);
+                }
+
+                String line = pName + ".Main_" + method + ";";
+                for (String className : dependentTestClassNames) {
+                    line += className + " ";
+                }
+
+
+                // test description
+                String[] pparts = pName.split("\\.");
+                // detail e.g. add_double
+                String detail = pparts[pparts.length-1];
+                // type := opcode | verify
+                String type = pparts[pparts.length-2];
+
+                String description;
+                if ("format".equals(type)) {
+                    description = "format";
+                } else if ("opcodes".equals(type)) {
+                    // Beautify name, so it matches the actual mnemonic
+                    detail = detail.replaceAll("_", "-");
+                    detail = detail.replace("-from16", "/from16");
+                    detail = detail.replace("-high16", "/high16");
+                    detail = detail.replace("-lit8", "/lit8");
+                    detail = detail.replace("-lit16", "/lit16");
+                    detail = detail.replace("-4", "/4");
+                    detail = detail.replace("-16", "/16");
+                    detail = detail.replace("-32", "/32");
+                    detail = detail.replace("-jumbo", "/jumbo");
+                    detail = detail.replace("-range", "/range");
+                    detail = detail.replace("-2addr", "/2addr");
+
+                    // Unescape reserved words
+                    detail = detail.replace("opc-", "");
+
+                    description = detail;
+                } else if ("verify".equals(type)) {
+                    description = "verifier";
+                } else {
+                    description = type + " " + detail;
+                }
+
+                String details = (md.title != null ? md.title : "");
+                if (md.constraint != null) {
+                    details = " Constraint " + md.constraint + ", " + details;
+                }
+                if (details.length() != 0) {
+                    details = details.substring(0, 1).toUpperCase() + details.substring(1);
+                }
+
+                line += ";" + description + ";" + comment + ";" + details;
+
+                datafileContent += line + "\n";
+                generateBuildStepFor(pName, method, dependentTestClassNames,
+                        targets);
+            }
+
+
+        }
+
+        // write latest HOSTJUNIT generated file and AllTests.java
+        ctsFinish();
+
+        File scriptDataDir = new File(OUTPUT_FOLDER + "/data/");
+        scriptDataDir.mkdirs();
+        writeToFile(new File(scriptDataDir, "scriptdata"), datafileContent);
+
+        if (!javacHostJunitBuildStep.build()) {
+            System.out.println("main javac cts-host-hostjunit-classes build step failed");
+            System.exit(1);
+        }
+
+        if (javacBuildStep.build()) {
+            for (BuildStep buildStep : targets) {
+                if (!buildStep.build()) {
+                    System.out.println("building failed. buildStep: " +
+                            buildStep.getClass().getName() + ", " + buildStep);
+                    System.exit(1);
+                }
+            }
+        } else {
+            System.out.println("main javac dalvik-cts-buildutil build step failed");
+            System.exit(1);
+        }
+    }
+
+    private void generateBuildStepFor(String pName, String method,
+            Set<String> dependentTestClassNames, Set<BuildStep> targets) {
+
+
+        for (String dependentTestClassName : dependentTestClassNames) {
+            generateBuildStepForDependant(dependentTestClassName, targets);
+        }
+    }
+
+    private void generateBuildStepForDependant(String dependentTestClassName,
+            Set<BuildStep> targets) {
+
+        File sourceFolder = new File(JAVASRC_FOLDER);
+        String fileName = dependentTestClassName.replace('.', '/').trim();
+
+        if (new File(sourceFolder, fileName + ".dfh").exists()) {
+
+            BuildStep.BuildFile inputFile = new BuildStep.BuildFile(
+                    JAVASRC_FOLDER, fileName + ".dfh");
+            BuildStep.BuildFile dexFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".dex");
+
+            DFHBuildStep buildStep = new DFHBuildStep(inputFile, dexFile);
+
+            BuildStep.BuildFile jarFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".jar");
+            JarBuildStep jarBuildStep = new JarBuildStep(dexFile,
+                    "classes.dex", jarFile, true);
+            jarBuildStep.addChild(buildStep);
+
+            targets.add(jarBuildStep);
+            return;
+        }
+
+        if (new File(sourceFolder, fileName + ".d").exists()) {
+
+            BuildStep.BuildFile inputFile = new BuildStep.BuildFile(
+                    JAVASRC_FOLDER, fileName + ".d");
+            BuildStep.BuildFile dexFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".dex");
+
+            DasmBuildStep buildStep = new DasmBuildStep(inputFile, dexFile);
+
+            BuildStep.BuildFile jarFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".jar");
+
+            JarBuildStep jarBuildStep = new JarBuildStep(dexFile,
+                    "classes.dex", jarFile, true);
+            jarBuildStep.addChild(buildStep);
+            targets.add(jarBuildStep);
+            return;
+        }
+
+        if (new File(sourceFolder, fileName + ".java").exists()) {
+
+            BuildStep dexBuildStep = generateDexBuildStep(
+                    COMPILED_CLASSES_FOLDER, fileName);
+            targets.add(dexBuildStep);
+            return;
+        }
+
+        try {
+            if (Class.forName(dependentTestClassName) != null) {
+
+                BuildStep dexBuildStep = generateDexBuildStep(
+                        COMPILED_CLASSES_FOLDER, fileName);
+                targets.add(dexBuildStep);
+                return;
+            }
+        } catch (ClassNotFoundException e) {
+            // do nothing
+        }
+
+        throw new RuntimeException("neither .dfh,.d,.java file of dependant test class found : " +
+                dependentTestClassName + ";" + fileName);
+    }
+
+    private BuildStep generateDexBuildStep(String classFileFolder,
+            String classFileName) {
+        BuildStep.BuildFile classFile = new BuildStep.BuildFile(
+                classFileFolder, classFileName + ".class");
+
+        BuildStep.BuildFile tmpJarFile = new BuildStep.BuildFile(OUTPUT_FOLDER,
+                classFileName + "_tmp.jar");
+
+        JarBuildStep jarBuildStep = new JarBuildStep(classFile, classFileName +
+                ".class", tmpJarFile, false);
+
+        BuildStep.BuildFile outputFile = new BuildStep.BuildFile(OUTPUT_FOLDER,
+                classFileName + ".jar");
+
+        DexBuildStep dexBuildStep = new DexBuildStep(tmpJarFile, outputFile,
+                true);
+
+        dexBuildStep.addChild(jarBuildStep);
+        return dexBuildStep;
+
+    }
+
+    /**
+     * @param pName
+     * @param classOnlyName
+     * @param methodSource
+     * @return testclass names
+     */
+    private Set<String> parseTestClassName(String pName, String classOnlyName,
+            String methodSource) {
+        Set<String> entries = new HashSet<String>();
+        String opcodeName = classOnlyName.substring(5);
+
+        Scanner scanner = new Scanner(methodSource);
+
+        String[] patterns = new String[] {"new\\s(T_" + opcodeName + "\\w*)",
+                "(T_" + opcodeName + "\\w*)", "new\\s(T\\w*)"};
+
+        String token = null;
+        for (String pattern : patterns) {
+            token = scanner.findWithinHorizon(pattern, methodSource.length());
+            if (token != null) {
+                break;
+            }
+        }
+
+        if (token == null) {
+            System.err.println("warning: failed to find dependent test class name: " + pName +
+                    ", " + classOnlyName + " in methodSource:\n" + methodSource);
+            return entries;
+        }
+
+        MatchResult result = scanner.match();
+
+        entries.add((pName + ".d." + result.group(1)).trim());
+
+        // search additional @uses directives
+        Pattern p = Pattern.compile("@uses\\s+(.*)\\s+", Pattern.MULTILINE);
+        Matcher m = p.matcher(methodSource);
+        while (m.find()) {
+            String res = m.group(1);
+            entries.add(res.trim());
+        }
+
+        // lines with the form @uses
+        // dot.junit.opcodes.add_double.jm.T_add_double_2
+        // one dependency per one @uses
+        // TODO
+
+        return entries;
+    }
+
+    private MethodData parseTestMethod(String pname, String classOnlyName,
+            String method) {
+
+        String path = pname.replaceAll("\\.", "/");
+        String absPath = JAVASRC_FOLDER + "/" + path + "/" + classOnlyName + ".java";
+        File f = new File(absPath);
+
+        Scanner scanner;
+        try {
+            scanner = new Scanner(f);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("error while reading to file: " + e.getClass().getName() +
+                    ", msg:" + e.getMessage());
+        }
+        
+        String methodPattern = "public\\s+void\\s+" + method + "[^\\{]+\\{";
+        
+        String token = scanner.findWithinHorizon(methodPattern, (int) f.length());
+        if (token == null) {
+            throw new RuntimeException("cannot find method source of 'public void " + method +
+                    "' in file '" + absPath + "'");
+        }
+
+        MatchResult result = scanner.match();
+        result.start();
+        result.end();
+
+        StringBuilder builder = new StringBuilder();
+        //builder.append(token);
+
+        try {
+            FileReader reader = new FileReader(f);
+            reader.skip(result.end());
+
+            char currentChar;
+            int blocks = 1;
+            while ((currentChar = (char) reader.read()) != -1 && blocks > 0) {
+                switch (currentChar) {
+                    case '}': {
+                        blocks--;
+                        builder.append(currentChar);
+                        break;
+                    }
+                    case '{': {
+                        blocks++;
+                        builder.append(currentChar);
+                        break;
+                    }
+                    default: {
+                        builder.append(currentChar);
+                        break;
+                    }
+                }
+            }
+            if (reader != null) {
+                reader.close();
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("failed to parse", e);
+        }
+
+        // find the @title/@constraint in javadoc comment for this method
+        Scanner scanner2;
+        try {
+            // using platform's default charset
+            scanner2 = new Scanner(f);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("error while reading to file: " + e.getClass().getName() +
+                    ", msg:" + e.getMessage());
+        }
+        // using platform's default charset
+        String all = new String(FileUtils.readFile(f));
+        // System.out.println("grepping javadoc found for method " + method +
+        // " in " + pname + "," + classOnlyName);
+        String commentPattern = "/\\*\\*([^{]*)\\*/\\s*" + methodPattern;
+        Pattern p = Pattern.compile(commentPattern, Pattern.DOTALL);
+        Matcher m = p.matcher(all);
+        String title = null, constraint = null;
+        if (m.find()) {
+            String res = m.group(1);
+            // System.out.println("res: " + res);
+            // now grep @title and @constraint
+            Matcher titleM = Pattern.compile("@title (.*)", Pattern.DOTALL)
+            .matcher(res);
+            if (titleM.find()) {
+                title = titleM.group(1).replaceAll("\\n     \\*", "");
+                title = title.replaceAll("\\n", " ");
+                title = title.trim();
+                // System.out.println("title: " + title);
+            } else {
+                System.err.println("warning: no @title found for method " + method + " in " + pname +
+                        "," + classOnlyName);
+            }
+            // constraint can be one line only
+            Matcher constraintM = Pattern.compile("@constraint (.*)").matcher(
+                    res);
+            if (constraintM.find()) {
+                constraint = constraintM.group(1);
+                constraint = constraint.trim();
+                // System.out.println("constraint: " + constraint);
+            } else if (method.contains("VFE")) {
+                System.err
+                .println("warning: no @constraint for for a VFE method:" + method + " in " +
+                        pname + "," + classOnlyName);
+            }
+        } else {
+            System.err.println("warning: no javadoc found for method " + method + " in " + pname +
+                    "," + classOnlyName);
+        }
+        MethodData md = new MethodData();
+        md.methodBody = builder.toString();
+        md.constraint = constraint;
+        md.title = title;
+        if (scanner != null) {
+            scanner.close();
+        }
+        if (scanner2 != null) {
+            scanner.close();
+        }
+        return md;
+    }
+
+    private void writeToFileMkdir(File file, String content) {
+        File parent = file.getParentFile();
+        if (!parent.exists() && !parent.mkdirs()) {
+            throw new RuntimeException("failed to create directory: " + parent.getAbsolutePath());
+        }
+        writeToFile(file, content);
+    }
+
+    private void writeToFile(File file, String content) {
+        try {
+            if (file.length() == content.length()) {
+                FileReader reader = new FileReader(file);
+                char[] charContents = new char[(int) file.length()];
+                reader.read(charContents);
+                String contents = new String(charContents);
+                if (contents.equals(content)) {
+                    // System.out.println("skipping identical: "
+                    // + file.getAbsolutePath());
+                    return;
+                }
+            }
+
+            //System.out.println("writing file " + file.getAbsolutePath());
+
+            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
+                    new FileOutputStream(file), "utf-8"));
+            bw.write(content);
+            bw.close();
+        } catch (Exception e) {
+            throw new RuntimeException("error while writing to file: " + e.getClass().getName() +
+                    ", msg:" + e.getMessage());
+        }
+    }
+
+    private File getFileFromPackage(String pname, String methodName)
+    throws IOException {
+        // e.g. dxc.junit.argsreturns.pargsreturn
+        String path = getFileName(pname, methodName, ".java");
+        String absPath = MAIN_SRC_OUTPUT_FOLDER + "/" + path;
+        File dirPath = new File(absPath);
+        File parent = dirPath.getParentFile();
+        if (!parent.exists() && !parent.mkdirs()) {
+            throw new IOException("failed to create directory: " + absPath);
+        }
+        return dirPath;
+    }
+
+    private String getFileName(String pname, String methodName,
+            String extension) {
+        String path = pname.replaceAll("\\.", "/");
+        return new File(path, "Main_" + methodName + extension).getPath();
+    }
+}
diff --git a/tools/vm-tests-tf/src/util/build/BuildStep.java b/tools/vm-tests-tf/src/util/build/BuildStep.java
new file mode 100644
index 0000000..dbc6bca
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/BuildStep.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.channels.FileChannel;
+import java.util.HashSet;
+import java.util.Set;
+
+abstract class BuildStep implements Comparable<BuildStep> {
+
+    BuildFile inputFile;
+    BuildFile outputFile;
+
+    static class BuildFile {
+        final File folder;
+        final File fileName;
+
+        BuildFile(String folder, String fileName) {
+            this.folder = new File(folder);
+            this.fileName = new File(this.folder, fileName);
+        }
+
+        String getPath() {
+            return fileName.getAbsolutePath();
+        }
+
+        @Override
+        public int hashCode() {
+            return fileName.hashCode();
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == null) return false;
+            if (this == obj) return true;
+            if (getClass() == obj.getClass()) {
+                BuildFile other = (BuildFile) obj;
+                return fileName.equals(other.fileName);
+            }
+            return false;
+        }
+    }
+
+    BuildStep(BuildFile inputFile, BuildFile outputFile) {
+        if (inputFile == null) {
+            throw new NullPointerException("inputFile is null");
+        }
+        if (outputFile == null) {
+            throw new NullPointerException("outputFile is null");
+        }
+        this.inputFile = inputFile;
+        this.outputFile = outputFile;
+    }
+
+    BuildStep() {
+    }
+
+    private Set<BuildStep> children;
+
+    boolean build() {
+        if (children != null) {
+            for (BuildStep child : children) {
+                if (!child.build()) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (obj == this) return true;
+        return this.getClass() == obj.getClass();
+    }
+
+    @Override
+    public abstract int hashCode();
+
+    public void addChild(BuildStep child) {
+        if (children == null) {
+            children = new HashSet<BuildStep>();
+        }
+        children.add(child);
+    }
+
+    public static void copyFile(File in, File out) throws IOException {
+        FileChannel inChannel = new FileInputStream(in).getChannel();
+        FileChannel outChannel = new FileOutputStream(out).getChannel();
+        try {
+            inChannel.transferTo(0, inChannel.size(), outChannel);
+        } catch (IOException e) {
+            throw e;
+        } finally {
+            if (inChannel != null) inChannel.close();
+            if (outChannel != null) outChannel.close();
+        }
+    }
+
+    public int compareTo(BuildStep o) {
+        return (inputFile == o.inputFile ? 0 : (inputFile != null
+                ? (o.inputFile != null ? inputFile.getPath().compareTo(
+                        o.inputFile.getPath()) : 1) : -1));
+    }
+}
diff --git a/tools/vm-tests-tf/src/util/build/DFHBuildStep.java b/tools/vm-tests-tf/src/util/build/DFHBuildStep.java
new file mode 100644
index 0000000..47a81bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/DFHBuildStep.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import dxconvext.ClassFileAssembler;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.OutputStream;
+import java.io.Reader;
+
+public class DFHBuildStep extends BuildStep {
+
+    public DFHBuildStep(BuildFile inputFile, BuildFile outputFile) {
+        super(inputFile, outputFile);
+    }
+
+    @Override
+    boolean build() {
+        if (super.build()) {
+            File out_dir = outputFile.fileName.getParentFile();
+            if (!out_dir.exists() && !out_dir.mkdirs()) {
+                System.err.println("failed to create dir: "
+                        + out_dir.getAbsolutePath());
+                return false;
+            }
+
+            ClassFileAssembler cfAssembler = new ClassFileAssembler();
+            Reader r;
+            OutputStream os;
+            try {
+                r = new FileReader(inputFile.fileName);
+                os = new FileOutputStream(outputFile.fileName);
+            } catch (FileNotFoundException e) {
+                System.err.println(e);
+                return false;
+            }
+            try {
+                // cfAssembler throws a runtime exception
+                cfAssembler.writeClassFile(r, os, true);
+            } catch (RuntimeException e) {
+                System.err.println("error in DFHBuildStep for inputfile "+inputFile.fileName+", outputfile "+outputFile.fileName);
+                throw e;
+            }
+            
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+
+        if (super.equals(obj)) {
+            return inputFile.equals(((DFHBuildStep) obj).inputFile)
+                    && outputFile.equals(((DFHBuildStep) obj).outputFile);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return (inputFile == null ? 31 : inputFile.hashCode())
+                ^ (outputFile == null ? 37 : outputFile.hashCode());
+    }
+}
diff --git a/tools/vm-tests-tf/src/util/build/DasmBuildStep.java b/tools/vm-tests-tf/src/util/build/DasmBuildStep.java
new file mode 100644
index 0000000..b77a491
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/DasmBuildStep.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import dasm.DAsm;
+import dasm.DasmError;
+import dasm.Utils;
+
+import java.io.BufferedReader;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+class DasmBuildStep extends BuildStep {
+
+
+    boolean generate_linenum = false;
+
+    DasmBuildStep(BuildFile inputFile, BuildFile outputFile) {
+        super(inputFile, outputFile);
+
+    }
+
+    @Override
+    boolean build() {
+        if (super.build()) {
+            return assemble(inputFile.fileName);
+        }
+        return false;
+    }
+
+    private static Reader createReader(String fname) throws IOException {
+        FileInputStream fs = new FileInputStream(fname);
+        InputStreamReader ir;
+        ir = new InputStreamReader(fs);
+        return new BufferedReader(ir);
+    }
+    
+    private boolean assemble(File file) {
+        DAsm dAsm = new DAsm();
+        String fname = file.getAbsolutePath();
+        
+        // read and parse .d file
+        Reader inp = null; 
+        try {
+            inp = createReader(fname);
+            dAsm.readD(inp, new File(fname).getName(), generate_linenum);
+            close(inp);
+        } catch(DasmError e) {
+            if(BuildDalvikSuite.DEBUG)
+                e.printStackTrace();
+            System.err.println("DASM Error: " + e.getMessage());
+        } catch(Exception e) {
+             if(BuildDalvikSuite.DEBUG)
+                 e.printStackTrace();
+             System.err.println("Exception <" + e.getClass().getName() + ">" + e.getMessage() + 
+                         " while reading and parsing " + fname);
+             return false;
+             
+        }
+        finally {
+            close(inp);
+        }
+        
+        if(dAsm.errorCount() > 0) {
+            System.err.println("Found " + dAsm.errorCount() + " errors " +
+                    " while reading and parsing " + fname);
+                return false;
+        }
+
+        String class_path[] = Utils.getClassFieldFromString(dAsm.getClassName());
+        String class_name = class_path[1];
+
+        // determine where to place .dex file
+        String dest_dir = outputFile.folder.getAbsolutePath();
+        if (class_path[0] != null) {
+            String class_dir = class_path[0].replaceAll("/|\\.", Character.toString(File.separatorChar));                                           
+            if (dest_dir != null) {
+                dest_dir = dest_dir + File.separator + class_dir;
+            } else {
+                dest_dir = class_dir;
+            }
+        }
+            
+        File out_file = null;
+        
+        if (dest_dir == null) {
+            out_file = new File(class_name + ".dex");
+        } else {
+            out_file = new File(dest_dir, class_name + ".dex");
+
+            // check that dest_dir exists
+            File dest = new File(dest_dir);
+            if (!dest.exists()) {
+                dest.mkdirs();
+            }
+
+            if (!dest.isDirectory()) {
+                System.err.println("Cannot create directory " + dest_dir);
+                return false;
+            }
+        }
+         
+        // write output
+        FileOutputStream outp = null;
+
+        try {
+            outp = new FileOutputStream(out_file);
+            dAsm.write(outp, null);
+        } catch(Exception e) {
+                if(BuildDalvikSuite.DEBUG)
+                e.printStackTrace();
+                System.err.println("Exception <" + e.getClass().getName() + ">" + e.getMessage() + 
+                        " while writing " + out_file.getPath());
+
+                close(outp);
+
+                out_file.delete();
+
+                return false;
+       }
+       finally {
+           close(outp);
+       }
+
+       return true;
+    }
+    
+    private static void close(Closeable c) {
+        if(c == null)
+            return;
+        try {
+            c.close();
+        } catch(IOException e) {
+            
+        }
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) {
+            DasmBuildStep other = (DasmBuildStep) obj;
+
+            return inputFile.equals(other.inputFile)
+                    && generate_linenum == other.generate_linenum
+                    && outputFile.equals(other.outputFile);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return inputFile.hashCode() ^ outputFile.hashCode()
+                ^ (generate_linenum ? 31 : 37);
+    }
+}
diff --git a/tools/vm-tests-tf/src/util/build/DeviceUtil.java.template b/tools/vm-tests-tf/src/util/build/DeviceUtil.java.template
new file mode 100644
index 0000000..c64a138
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/DeviceUtil.java.template
@@ -0,0 +1,72 @@
+
+package dot.junit;
+
+
+import com.android.ddmlib.IDevice;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.Scanner;
+
+public class DeviceUtil {
+
+    private static boolean DEBUG = System.getProperty("cts.vm-tests.debug") != null;
+
+    /**
+     * Executes the command and its arguments in a native process.
+     *
+     * @param commandAndArgs a string array to be passed containing the
+     *            executable and its arguments
+     * @param okIndicator if not null, this String must occur in the stdout of
+     *            the executable (since only checking for the return code is not
+     *            sufficient e.g. for adb shell cmd)
+     * @throws Exception thrown by the underlying command in case of an error.
+     */
+    public static void digestCommand(String[] commandAndArgs, String okIndicator) {
+        RuntimeException re = null;
+        try {
+            if (DEBUG) {
+                String c = "";
+                for (int i = 0; i < commandAndArgs.length; i++) {
+                    c += commandAndArgs[i] + " ";
+                }
+                System.out.print("com: " + c);
+            }
+            StringBuilder sb = new StringBuilder();
+            ProcessBuilder pb = new ProcessBuilder(commandAndArgs).redirectErrorStream(true);
+            Process p = pb.start();
+
+            InputStream is = p.getInputStream();
+            Scanner scanner = new Scanner(is);
+            int retCode = p.waitFor();
+            while (scanner.hasNextLine()) {
+                sb.append(scanner.nextLine());
+            }
+            scanner.close();
+            if (retCode != 0 || (okIndicator != null && !sb.toString().contains(okIndicator))) {
+                String msg = sb.toString() + "\nreturn code: " + retCode;
+                re = new RuntimeException(msg);
+                if (DEBUG) System.out.println("-> error! msg:"+msg);
+            } else {
+                if (DEBUG) System.out.println(" -> " + retCode);
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("Exception occurred: " + e.getClass().getName() + ", msg:"
+                    + e.getMessage());
+        } finally {
+            if (re != null) {
+                throw re;
+            }
+        }
+    }
+
+    public static void adbExec(IDevice device, String tmpdir, String classpath, String mainclass) {
+        DeviceUtil.digestCommand(new String[] {"adb", "-s", device.getSerialNumber(), "shell",
+               "ANDROID_DATA=" + tmpdir, "dalvikvm", "-Xint:portable", "-Xmx512M", "-Xss32K",
+               "-Djava.io.tmpdir=" + tmpdir, "-classpath", classpath, mainclass, "&&",
+               "echo", "mk_dalvikvmok" }, "mk_dalvikvmok");
+    }
+ }
diff --git a/tools/vm-tests-tf/src/util/build/DexBuildStep.java b/tools/vm-tests-tf/src/util/build/DexBuildStep.java
new file mode 100644
index 0000000..6aba51c
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/DexBuildStep.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import com.android.dx.command.dexer.Main;
+import java.io.IOException;
+
+public class DexBuildStep extends BuildStep {
+
+    private final boolean deleteInputFileAfterBuild;
+
+    DexBuildStep(BuildFile inputFile, BuildFile outputFile,
+            boolean deleteInputFileAfterBuild) {
+        super(inputFile, outputFile);
+        this.deleteInputFileAfterBuild = deleteInputFileAfterBuild;
+    }
+
+    @Override
+    boolean build() {
+
+        if (super.build()) {
+            Main.Arguments args = new Main.Arguments();
+
+            args.jarOutput = true;
+            args.fileNames = new String[] {inputFile.fileName.getAbsolutePath()};
+
+            args.outName = outputFile.fileName.getAbsolutePath();
+
+            int result = 0;
+            try {
+                result = Main.run(args);
+            } catch (IOException e) {
+                e.printStackTrace();
+                return false;
+            }
+
+            if (result == 0) {
+                if (deleteInputFileAfterBuild) {
+                    inputFile.fileName.delete();
+                }
+                return true;
+            } else {
+                System.err.println("exception while dexing "
+                        + inputFile.fileName.getAbsolutePath() + " to "
+                        + args.outName);
+                return false;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return inputFile.hashCode() ^ outputFile.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) {
+            DexBuildStep other = (DexBuildStep) obj;
+
+            return inputFile.equals(other.inputFile)
+                    && outputFile.equals(other.outputFile);
+        }
+        return false;
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/util/build/JarBuildStep.java b/tools/vm-tests-tf/src/util/build/JarBuildStep.java
new file mode 100644
index 0000000..776e905
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/JarBuildStep.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import sun.tools.jar.Main;
+
+import java.io.File;
+import java.io.IOException;
+
+
+public class JarBuildStep extends BuildStep {
+
+    String destFileName;
+    private final boolean deleteInputFileAfterBuild;
+
+    public JarBuildStep(BuildFile inputFile, String destFileName,
+            BuildFile outputFile, boolean deleteInputFileAfterBuild) {
+        super(inputFile, outputFile);
+        this.destFileName = destFileName;
+        this.deleteInputFileAfterBuild = deleteInputFileAfterBuild;
+    }
+
+    @Override
+    boolean build() {
+        if (super.build()) {
+            File tempFile = new File(inputFile.folder, destFileName);
+            try {
+                if (!inputFile.fileName.equals(tempFile)) {
+                    copyFile(inputFile.fileName, tempFile);
+                } else {
+                    tempFile = null;
+                }
+            } catch (IOException e) {
+                System.err.println("io exception:"+e.getMessage());
+                e.printStackTrace();
+                return false;
+            }
+
+            File outDir = outputFile.fileName.getParentFile();
+            if (!outDir.exists() && !outDir.mkdirs()) {
+                System.err.println("failed to create output dir: "
+                        + outDir.getAbsolutePath());
+                return false;
+            }
+            String[] arguments = new String[] {
+                    "-cMf", outputFile.fileName.getAbsolutePath(), "-C",
+                    inputFile.folder.getAbsolutePath(), destFileName};
+            Main main = new Main(System.out, System.err, "jar");
+            boolean success = main.run(arguments);
+
+            if (success) {
+                if (tempFile != null) {
+                    tempFile.delete();
+                }
+                if (deleteInputFileAfterBuild) {
+                    inputFile.fileName.delete();
+                }
+            } else {
+                System.err.println("exception in JarBuildStep while calling jar with args:" +
+                        " \"-cMf\", "+outputFile.fileName.getAbsolutePath()+", \"-C\"," + 
+                        inputFile.folder.getAbsolutePath()+", "+ destFileName);
+            }
+            return success;
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return inputFile.hashCode() ^ outputFile.hashCode()
+                ^ destFileName.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) {
+            JarBuildStep other = (JarBuildStep) obj;
+            return inputFile.equals(other.inputFile)
+                    && outputFile.equals(other.outputFile)
+                    && destFileName.equals(other.destFileName);
+
+        }
+        return false;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/util/build/JavacBuildStep.java b/tools/vm-tests-tf/src/util/build/JavacBuildStep.java
new file mode 100644
index 0000000..7d7033f
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/JavacBuildStep.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import com.sun.tools.javac.Main;
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.util.HashSet;
+import java.util.Set;
+
+public class JavacBuildStep extends BuildStep {
+
+    private final String destPath;
+    private final String classPath;
+    private final Set<String> sourceFiles = new HashSet<String>();
+    public JavacBuildStep(String destPath, String classPath) {
+        this.destPath = destPath;
+        this.classPath = classPath;
+    }
+    
+    public void addSourceFile(String sourceFile)
+    {
+        sourceFiles.add(sourceFile);
+    }
+    
+    @Override
+    boolean build() {
+        if (super.build())
+        {
+            if (sourceFiles.isEmpty())
+            {
+                return true;
+            }
+            
+            File destFile = new File(destPath);
+            if (!destFile.exists() && !destFile.mkdirs())
+            {
+                System.err.println("failed to create destination dir");
+                return false;
+            }
+            int args = 4;
+            String[] commandLine = new String[sourceFiles.size()+args];
+            commandLine[0] = "-classpath";
+            commandLine[1] = classPath;
+            commandLine[2] = "-d";
+            commandLine[3] = destPath;
+             
+            String[] files = new String[sourceFiles.size()];
+            sourceFiles.toArray(files);
+            
+            System.arraycopy(files, 0, commandLine, args, files.length);
+            
+            
+            return Main.compile(commandLine, new PrintWriter(System.err)) == 0;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        // TODO Auto-generated method stub
+        if (super.equals(obj))
+        {
+            JavacBuildStep other = (JavacBuildStep) obj;
+            return destPath.equals(other.destPath) 
+                && classPath.equals(other.classPath)
+                && sourceFiles.equals(other.sourceFiles);
+        }
+        return false;
+    }
+    
+    @Override
+    public int hashCode() {
+        return destPath.hashCode() ^ classPath.hashCode() ^ sourceFiles.hashCode();
+    }
+}