[vmkit-commits] [vmkit] r198507 - Implements some bytecode. Only 13 bytecodes are still missing.
Gael Thomas
gael.thomas at lip6.fr
Sat Jan 4 09:54:32 PST 2014
Author: gthomas
Date: Sat Jan 4 11:54:31 2014
New Revision: 198507
URL: http://llvm.org/viewvc/llvm-project?rev=198507&view=rev
Log:
Implements some bytecode. Only 13 bytecodes are still missing.
Modified:
vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
Modified: vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc?rev=198507&r1=198506&r2=198507&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Sat Jan 4 11:54:31 2014
@@ -1144,6 +1144,7 @@ void J3CodeGen::translate() {
break;
case J3Cst::BC_pop2: nyi(); /* 0x58 */
+
case J3Cst::BC_dup: /* 0x59 */
stack.push(stack.top());
break;
@@ -1289,24 +1290,53 @@ void J3CodeGen::translate() {
stack.push(builder->CreateSIToFP(stack.pop(), vm->typeDouble->llvmType()));
break;
- case J3Cst::BC_l2i: nyi(); /* 0x88 */
- case J3Cst::BC_l2f: nyi(); /* 0x89 */
- case J3Cst::BC_l2d: nyi(); /* 0x8a */
+ case J3Cst::BC_l2i: /* 0x88 */
+ stack.push(builder->CreateTruncOrBitCast(stack.pop(), builder->getInt32Ty()));
+ break;
+
+ case J3Cst::BC_l2f: /* 0x89 */
+ stack.push(builder->CreateSIToFP(stack.pop(), vm->typeFloat->llvmType()));
+ break;
+
+ case J3Cst::BC_l2d: /* 0x8a */
+ stack.push(builder->CreateSIToFP(stack.pop(), vm->typeDouble->llvmType()));
+ break;
+
case J3Cst::BC_f2i: /* 0x8b */
floatToInteger(vm->typeFloat, vm->typeInteger);
break;
- case J3Cst::BC_f2l: nyi(); /* 0x8c */
- case J3Cst::BC_f2d: nyi(); /* 0x8d */
- case J3Cst::BC_d2i: nyi(); /* 0x8e */
- case J3Cst::BC_d2l: nyi(); /* 0x8f */
- case J3Cst::BC_d2f: nyi(); /* 0x90 */
- case J3Cst::BC_i2b: nyi(); /* 0x91 */
+ case J3Cst::BC_f2l: /* 0x8c */
+ floatToInteger(vm->typeFloat, vm->typeLong);
+ break;
+
+ case J3Cst::BC_f2d: /* 0x8d */
+ stack.push(builder->CreateFPExt(stack.pop(), vm->typeDouble->llvmType()));
+ break;
+
+ case J3Cst::BC_d2i: /* 0x8e */
+ floatToInteger(vm->typeDouble, vm->typeInteger);
+ break;
+
+ case J3Cst::BC_d2l: /* 0x8f */
+ floatToInteger(vm->typeDouble, vm->typeLong);
+ break;
+
+ case J3Cst::BC_d2f: /* 0x90 */
+ stack.push(builder->CreateFPTrunc(stack.pop(), vm->typeFloat->llvmType()));
+ break;
+
+ case J3Cst::BC_i2b: /* 0x91 */
+ stack.push(builder->CreateSExt(builder->CreateTrunc(stack.pop(), builder->getInt8Ty()), builder->getInt32Ty()));
+ break;
+
case J3Cst::BC_i2c: /* 0x92 */
stack.push(builder->CreateZExt(builder->CreateTrunc(stack.pop(), builder->getInt16Ty()), builder->getInt32Ty()));
break;
- case J3Cst::BC_i2s: nyi(); /* 0x93 */
+ case J3Cst::BC_i2s: /* 0x93 */
+ stack.push(builder->CreateSExt(builder->CreateTrunc(stack.pop(), builder->getInt16Ty()), builder->getInt32Ty()));
+ break;
case J3Cst::BC_lcmp: /* 0x94 */
compareLong();
More information about the vmkit-commits
mailing list