Browse Source

Style corrections, optimized but notworking mul256 implementation removed

cl-refactor
Paweł Bylica 10 years ago
parent
commit
7476979d0b
  1. 2
      evmjit/libevmjit-cpp/Env.cpp
  2. 48
      evmjit/libevmjit/Arith256.cpp
  3. 4
      evmjit/libevmjit/BasicBlock.cpp
  4. 2
      evmjit/libevmjit/Cache.cpp

2
evmjit/libevmjit-cpp/Env.cpp

@ -78,7 +78,7 @@ extern "C"
if (value > 0) // value transfer
{
assert(c_callValueTransferGas > c_callStipend && "Overflow possible");
/*static*/ assert(c_callValueTransferGas > c_callStipend && "Overflow possible");
*io_gas -= static_cast<int64_t>(c_callValueTransferGas); // no underflow
_callGas += static_cast<int64_t>(c_callStipend); // overflow possibility, but in the same time *io_gas < 0
}

48
evmjit/libevmjit/Arith256.cpp

@ -56,54 +56,6 @@ llvm::Function* Arith256::getMulFunc()
auto c64 = Constant::get(64);
auto c128 = Constant::get(128);
auto c192 = Constant::get(192);
// auto mask64 = Constant::get(-1);
// auto x1 = m_builder.CreateLShr(x, c64);
// auto y2 = m_builder.CreateLShr(y, c64);
// auto x3 = m_builder.CreateLShr(x, c128);
// auto y5 = m_builder.CreateLShr(y, c128);
// auto x4 = m_builder.CreateTrunc(x3, i128);
// auto y6 = m_builder.CreateTrunc(y5, i128);
// auto x9 = m_builder.CreateTrunc(x, i128);
// auto y7 = m_builder.CreateTrunc(y, i128);
//
// auto y8 = m_builder.CreateAnd(y7, mask64);
// auto x10 = m_builder.CreateAnd(x9, mask64);
// auto m11 = m_builder.CreateMul(y8, x10);
// auto y12 = m_builder.CreateTrunc(y2, i128);
// auto y13 = m_builder.CreateAnd(y12, mask64);
// auto m14 = m_builder.CreateMul(y13, x10);
// auto m15 = m_builder.CreateMul(y6, x10);
// auto x16 = m_builder.CreateTrunc(x1, i128);
// auto x17 = m_builder.CreateAnd(x16, mask64);
// auto m18 = m_builder.CreateMul(x17, y8);
// auto m19 = m_builder.CreateMul(y13, x17);
// auto m20 = m_builder.CreateMul(x17, y6);
// auto m21 = m_builder.CreateMul(y8, x4);
// auto m22 = m_builder.CreateMul(y13, x4);
//
// auto n23 = m_builder.CreateZExt(m11, i256);
// auto n24 = m_builder.CreateZExt(m14, i256);
// auto n25 = m_builder.CreateZExt(m15, i256);
// auto n26 = m_builder.CreateZExt(m18, i256);
// auto n27 = m_builder.CreateZExt(m19, i256);
// auto n28 = m_builder.CreateZExt(m20, i256);
// auto n29 = m_builder.CreateZExt(m21, i256);
// auto n30 = m_builder.CreateZExt(m22, i256);
//
// auto p0 = m_builder.CreateNUWAdd(n25, n29);
// auto p1 = m_builder.CreateNUWAdd(p0, n27);
// auto p2 = m_builder.CreateShl(p1, c128);
// auto p3 = m_builder.CreateNUWAdd(n30, n28);
// auto p4 = m_builder.CreateShl(p3, c192);
// auto p5 = m_builder.CreateNUWAdd(n24, n26);
// auto p6 = m_builder.CreateShl(p5, c64);
//
// auto p31 = m_builder.CreateOr(p2, n23);
// auto p32 = m_builder.CreateAdd(p31, p4);
// auto p33 = m_builder.CreateAdd(p32, p6);
//
// m_builder.CreateRet(p33);
auto x_lo = m_builder.CreateTrunc(x, i64, "x.lo");
auto y_lo = m_builder.CreateTrunc(y, i64, "y.lo");

4
evmjit/libevmjit/BasicBlock.cpp

@ -351,8 +351,8 @@ void BasicBlock::dump(std::ostream& _out, bool _dotOutput)
}
out << (_dotOutput ? "| " : "Instructions:\n");
//for (auto ins = m_llvmBB->begin(); ins != m_llvmBB->end(); ++ins)
// out << *ins << (_dotOutput ? "\\l" : "\n");
for (auto ins = m_llvmBB->begin(); ins != m_llvmBB->end(); ++ins)
out << *ins << (_dotOutput ? "\\l" : "\n");
if (! _dotOutput)
out << "Current stack (offset = " << m_tosOffset << "):\n";

2
evmjit/libevmjit/Cache.cpp

@ -68,9 +68,7 @@ std::unique_ptr<llvm::Module> Cache::getObject(std::string const& id)
DLOG(cache) << "Unmatched version: " << objVersionStamp.str() << ", expected " << getLibVersionStamp().str() << "\n";
}
else if (r.getError() != std::make_error_code(std::errc::no_such_file_or_directory))
{
DLOG(cache) << r.getError().message(); // TODO: Add warning log
}
if (g_lastObject) // if object found create fake module
{

Loading…
Cancel
Save