コード例 #1
0
ファイル: rayobject_octree.cpp プロジェクト: BHCLL/blendocv
static void ocwrite(Octree *oc, RayFace *face, int quad, short x, short y, short z, float rtf[4][3])
{
	Branch *br;
	Node *no;
	short a, oc0, oc1, oc2, oc3, oc4, oc5;

	x<<=2;
	y<<=1;

	br= oc->adrbranch[0];

	if(oc->ocres==512) {
		oc0= ((x & 1024)+(y & 512)+(z & 256))>>8;
		br= addbranch(oc, br, oc0);
	}
コード例 #2
0
ファイル: optomizer.c プロジェクト: JackJone/opencv
static block_t  initblock(code_t *c, int leader, int *visit)
{
    int i;
    block_t  b;
    b.leader = leader;
    b.branch = NULL;
    b.nb = 0;
    b.ninst = 0;

    for(i=leader;i<nextinst(c);++i) {
	visit[i]++;
	b.ninst++;
	if(opcode(c,i) == eicreturn)
	    break;
	else if(isgoto(c,i)) {
	    /*printf("[%d:%d]\n",i,i+ivalcode(c,i));*/
	    addbranch(b.branch,b.nb,i+ivalcode(c,i));
	    if(opcode(c,i) != jmpu) {
		/*printf("[%d:%d]\n",i,i+1);*/
		addbranch(b.branch,b.nb,i+1);
	    }
	    break;
	} else if(opcode(c,i) == jmptab) {
	    struct {int n;val_t *loc;} *p;
	    int j;
	    p = pvalcode(c,i);
	    addbranch(b.branch,b.nb,i + p->loc[0].ival); 
	    for(j =1;j<p->n;j+=2)
		addbranch(b.branch,b.nb,i + p->loc[j+1].ival);
	    break;
	}
    }
    if(leader == nextinst(c))
	visit[leader]++;
    return b;
}