Example #1
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef intptr_t (*Func0)();
    typedef intptr_t (*Func1)(int);
    typedef intptr_t (*Func2)(int, int);
    typedef intptr_t (*Func3)(int, int, int);

    intptr_t resultRet = 0;
    intptr_t expectedRet = 0;

    switch (_argsCount)
    {
      case 0:
        resultRet = asmjit_cast<Func0>(_func)();
        break;
      case 1:
        resultRet = asmjit_cast<Func1>(_func)(1);
        break;
      case 2:
        resultRet = asmjit_cast<Func2>(_func)(1, 2);
        break;
      case 3:
        resultRet = asmjit_cast<Func3>(_func)(1, 2, 3);
        break;
    }

    result.setFormat("%i", static_cast<int>(resultRet));
    expected.setFormat("%i", static_cast<int>(expectedRet));

    return resultRet == expectedRet;
  }
Example #2
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef int (*Func)(void);
    Func func = asmjit_cast<Func>(_func);

    int resultRet = func();
    int expectedRet = 1 + 2 + 3 + 4;

    result.setFormat("ret=%d", resultRet);
    expected.setFormat("ret=%d", expectedRet);

    return resultRet == expectedRet;
  }
Example #3
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef void (*Func)(void*, void*, size_t);
    Func func = asmjit_cast<Func>(_func);

    char dst[20];
    char src[20] = "Hello AsmJit!";
    func(dst, src, strlen(src) + 1);

    result.setFormat("ret=\"%s\"", dst);
    expected.setFormat("ret=\"%s\"", src);

    return ::memcmp(dst, src, strlen(src) + 1) == 0;
  }
Example #4
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef int (*Func)(int*);
    Func func = asmjit_cast<Func>(_func);

    int buffer[4] = { 127, 87, 23, 17 };

    int resultRet = func(buffer);
    int expectedRet = 0;

    result.setFormat("ret=%d", resultRet);
    expected.setFormat("ret=%d", expectedRet);

    return resultRet == expectedRet;
  }
Example #5
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef void (*Func)(int*, const int*);
    Func func = asmjit_cast<Func>(_func);

    int src[2] = { 4, 9 };
    int resultRet[2] = { 0, 0 };
    int expectedRet[2] = { 0, (4 * 9) * 4 };

    func(resultRet, src);

    result.setFormat("ret={%d, %d}", resultRet[0], resultRet[1]);
    expected.setFormat("ret={%d, %d}", expectedRet[0], expectedRet[1]);

    return resultRet[0] == expectedRet[0] && resultRet[1] == expectedRet[1];
  }
Example #6
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef int (*Func)(void);
    Func func = asmjit_cast<Func>(_func);

    int resultRet = func();
    int expectedRet = 
      0  +  1 +  2 +  3 +  4 +  5 +  6 +  7 +  8 +  9 +
      10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 +
      20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 +
      30 + 31 + 32;

    result.setFormat("ret=%d", resultRet);
    expected.setFormat("ret=%d", expectedRet);

    return resultRet == expectedRet;
  }
Example #7
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef void (*Func)(int*, int, int, int);
    Func func = asmjit_cast<Func>(_func);

    int v0 = 0x000000FF;

    int resultRet;
    int expectedRet = 0x0000FF00;

    func(&resultRet, v0, 16, 8);

    result.setFormat("ret=%d", resultRet);
    expected.setFormat("ret=%d", expectedRet);

    return resultRet == expectedRet;
  }
Example #8
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef void (*Func)(int*, int*);
    Func func = asmjit_cast<Func>(_func);

    int resultX;
    int resultY;

    int expectedX =  36;
    int expectedY = -36;

    func(&resultX, &resultY);

    result.setFormat("x=%d, y=%d", resultX, resultY);
    expected.setFormat("x=%d, y=%d", expectedX, expectedY);

    return resultX == expectedX && resultY == expectedY;
  }
Example #9
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef int (*Func)(int, int, int);
    Func func = asmjit_cast<Func>(_func);

    int arg1 = 4;
    int arg2 = 8;

    int resultAdd = func(arg1, arg2, 0);
    int expectedAdd = calledFuncAdd(arg1, arg2);

    int resultMul = func(arg1, arg2, 1);
    int expectedMul = calledFuncMul(arg1, arg2);

    result.setFormat("add=%d, mul=%d", resultAdd, resultMul);
    expected.setFormat("add=%d, mul=%d", expectedAdd, expectedMul);

    return (resultAdd == expectedAdd) && (resultMul == expectedMul);
  }
Example #10
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef void (*Func)(int, int, char*);
    Func func = asmjit_cast<Func>(_func);

    char resultBuf[4];
    char expectedBuf[4] = { 1, 0, 0, 1 };

    func(0, 0, &resultBuf[0]); // We are expecting 1 (0 == 0).
    func(0, 1, &resultBuf[1]); // We are expecting 0 (0 != 1).
    func(1, 0, &resultBuf[2]); // We are expecting 0 (1 != 0).
    func(1, 1, &resultBuf[3]); // We are expecting 1 (1 == 1).

    result.setFormat("out={%d, %d, %d, %d}", resultBuf[0], resultBuf[1], resultBuf[2], resultBuf[3]);
    expected.setFormat("out={%d, %d, %d, %d}", expectedBuf[0], expectedBuf[1], expectedBuf[2], expectedBuf[3]);

    return resultBuf[0] == expectedBuf[0] &&
           resultBuf[1] == expectedBuf[1] &&
           resultBuf[2] == expectedBuf[2] &&
           resultBuf[3] == expectedBuf[3] ;
  }
Example #11
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef void (*Func)(int*, int*, int, int);
    Func func = asmjit_cast<Func>(_func);

    int v0 = 4;
    int v1 = 4;

    int resultHi;
    int resultLo;

    int expectedHi = 0;
    int expectedLo = v0 * v1;

    func(&resultHi, &resultLo, v0, v1);

    result.setFormat("hi=%d, lo=%d", resultHi, resultLo);
    expected.setFormat("hi=%d, lo=%d", expectedHi, expectedLo);

    return resultHi == expectedHi && resultLo == expectedLo;
  }
Example #12
0
  virtual bool run(void* _func, StringBuilder& result, StringBuilder& expected)
  {
    typedef void (*Func)(void*, void*, void*, void*, void*, void*, void*, void*);
    Func func = asmjit_cast<Func>(_func);

    uint8_t resultBuf[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    uint8_t expectedBuf[9] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };

    func(resultBuf, resultBuf, resultBuf, resultBuf,
         resultBuf, resultBuf, resultBuf, resultBuf);

    result.setFormat("buf={%d, %d, %d, %d, %d, %d, %d, %d, %d}",
      resultBuf[0], resultBuf[1], resultBuf[2], resultBuf[3],
      resultBuf[4], resultBuf[5], resultBuf[6], resultBuf[7],
      resultBuf[8]);
    expected.setFormat("buf={%d, %d, %d, %d, %d, %d, %d, %d, %d}",
      expectedBuf[0], expectedBuf[1], expectedBuf[2], expectedBuf[3],
      expectedBuf[4], expectedBuf[5], expectedBuf[6], expectedBuf[7],
      expectedBuf[8]);

    return memcmp(resultBuf, expectedBuf, 9) == 0;
  }
Example #13
0
void Pops::setTo( const WorkSpace& _WSpace, PopsMode _Mode )
{
	m_WSpace = &_WSpace;
	m_Mode = _Mode;

	m_AtomIndexes.clear();
    m_Atoms.clear();

	switch( m_Mode )
	{
	case AllAtom:
		{
			m_CurrentDat = &m_Atomic;
			if( m_Atomic.atoms.size() == 0 )
			{
				throw ProcedureException("POPS: No data has yet been loaded for AllAtom mode.");
			}
			for( size_t i = 0; i < _WSpace.nAtoms(); i++ )
			{
				if( _WSpace.atom[i].isHydrogen() )
				{
					m_AtomIndexes.push_back(SIZE_T_FAIL);
					continue;
				}
				else
				{
					m_AtomIndexes.push_back(m_Atoms.size());
				}

				bool found = false;
				for( size_t j = 0; j < m_Atomic.atoms.size(); j++ )
				{
					if( 0 == m_Atomic.atoms[j].atomName.compare( _WSpace.atom[i].pdbname ) &&
						0 == m_Atomic.atoms[j].resName.compare( _WSpace.atom[i].parentl3name ) )
					{
						m_Atoms.push_back( PopsAtom( m_Atomic.atoms[j], i, &_WSpace.atomxyz(i)) );
						found = true;
						break;
					}
				}
				if( !found )
				{
					for( size_t j = 0; j < m_Atomic.atoms.size(); j++ )
					{
						if( 0 == m_Atomic.atoms[j].resName.compare( "*" ) &&
							0 == m_Atomic.atoms[j].atomName.compare( _WSpace.atom[i].pdbname ) )
						{
							m_Atoms.push_back( PopsAtom( m_Atomic.atoms[j], i, &_WSpace.atomxyz(i)) );
							found = true;
							break;
						}
					}
				}
				if( !found )
				{
					StringBuilder sb;
					sb.setFormat("POPS: Cannot find atom type %s %s in the database.\n")
						(_WSpace.atom[i].pdbname)
						(_WSpace.atom[i].parentl3name);
					throw ProcedureException(sb.toString());
				}
			}
			break;
		}
	case Coarse:
		{
			m_CurrentDat = &m_Coarse;
			if( m_Coarse.atoms.size() == 0 )
			{
				throw ProcedureException("POPS: No data has yet been loaded for AllAtom mode.");
			}
			for( size_t i = 0; i < _WSpace.nAtoms(); i++ )
			{
				if( !_WSpace.atom[i].isCAlpha() )
				{
					m_AtomIndexes.push_back(SIZE_T_FAIL);
					continue;
				}
				else
				{
					m_AtomIndexes.push_back(m_Atoms.size());
				}

				bool found = false;
				for( size_t j = 0; j < m_Coarse.atoms.size(); j++ )
				{
					if( 0 == m_Coarse.atoms[j].atomName.compare( _WSpace.atom[i].pdbname ) &&
						0 == m_Coarse.atoms[j].resName.compare( _WSpace.atom[i].parentl3name ) )
					{
						m_Atoms.push_back( PopsAtom( m_Coarse.atoms[j], i, &_WSpace.atomxyz(i)) );
						found = true;
						break;
					}
				}
				if( !found )
				{
					for( size_t j = 0; j < m_Coarse.atoms.size(); j++ )
					{
						if( 0 == m_Coarse.atoms[j].resName.compare( "*" ) &&
							0 == m_Coarse.atoms[j].atomName.compare( _WSpace.atom[i].pdbname ) )
						{
							m_Atoms.push_back( PopsAtom( m_Coarse.atoms[j], i, &_WSpace.atomxyz(i) ) );
							found = true;
							break;
						}
					}
				}
				if( !found )
				{
					StringBuilder sb;
					sb.setFormat("POPS: Cannot find atom type %s %s in the database.\n")
						(_WSpace.atom[i].pdbname)
						(_WSpace.atom[i].parentl3name);
					throw ProcedureException(sb.toString());
				}				
			}
			break;
		}
	default:
		{
			THROW( CodeException, "Unknown PopsMode encountered!");
		}
	}
}