示例#1
0
void
CodeEmitterNVC0::emitPredicate(const Instruction *i)
{
   if (i->predSrc >= 0) {
      assert(i->getPredicate()->reg.file == FILE_PREDICATE);
      srcId(i->src[i->predSrc], 10);
      if (i->cc == CC_NOT_P)
         code[0] |= 0x2000; // negate
   } else {
      code[0] |= 0x1c00;
   }
}
示例#2
0
文件: ReadKkit.cpp 项目: csiki/MOOSE
void ReadKkit::setupSlaveMsg( const string& src, const string& dest )
{
	// Convert the pool to a BufPool, if it isn't one already
	Id destId( basePath_ + "/kinetics/" + dest );
	assert( destId != Id() );

	if( !destId.element()->cinfo()->isA( "BufPool" )) {
		destId.element()->zombieSwap( BufPool::initCinfo() );
	}

	map< string, Id >* nameMap;
	// Check if the src is a table or a stim
	Id srcId( basePath_ + "/kinetics/" + src );
	assert( srcId != Id() );
	string output = "output";
	if ( srcId.element()->cinfo()->isA( "TableBase" ) ) {
		nameMap = &tabIds_;
	} else if ( srcId.element()->cinfo()->isA( "PulseGen" ) ) {
		nameMap = &stimIds_;
		output = "output";
	} else {
		cout << "Error: Unknown source for SLAVE msg: (" << src << 
			", " << dest << ")\n";
		return;
	}

	// NSLAVE is 1, CONCSLAVE is 2.
	map< Id, int >::iterator i = poolFlags_.find( destId );
	if ( i == poolFlags_.end() || !( i->second & 2 ) ) {
		innerAddMsg( src, *nameMap, output, dest, poolIds_, 
			"setNInit" );
	} else {
		innerAddMsg( src, *nameMap, output, dest, poolIds_,
			"setConcInit" );

		double CONCSCALE = 0.001;
		// Rescale from uM to millimolar.
		if ( nameMap == &tabIds_ ) {
			SetGet2< double, double >::set( srcId, "linearTransform",
				CONCSCALE, 0 );
		} else if ( nameMap == &stimIds_ ) {
			double x = Field< double >::get( srcId, "baseLevel" );
			Field< double >::set( srcId, "baseLevel", x * CONCSCALE );
			x = Field< double >::get( srcId, "firstLevel" );
			Field< double >::set( srcId, "firstLevel", x * CONCSCALE );
			x = Field< double >::get( srcId, "secondLevel" );
			Field< double >::set( srcId, "secondLevel", x * CONCSCALE );
		}
	}
	// cout << "Added slave msg from " << src << " to " << dest << endl;
}