lkml.org 
[lkml]   [2000]   [Sep]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: __ucmpdi2
Date
Jeremy Higdon writes:

> In reality, the switch does a 60 bit shift right, so I can cast to a
> uint, which is the right thing to do on old architectures :-), solving
> the problem. I had originally thought that the problem was in all the
> masks, shifts, and compares, but they are all inlined.

Well, what do you care about most? The problem can be solved in
other, more disturbing ways. :-) For example, gcc's computed goto.


uint64_t
former_user_of___ucmpdi2(uint64_t node, uint64_t port){
static const void *jumps[16] = {
&&case_foo, /* 0 */
&&case_foo, /* 1 */
&&case_foo, /* 2 */
&&case_foo, /* 3 */
&&case_foo, /* 4 */
&&case_foo, /* 5 */
&&case_foo, /* 6 */
&&case_foo, /* 7 */
&&case_bar, /* 8 */
&&case_bar, /* 9 */
&&case_bar, /* a */
&&case_bar, /* b */
&&case_baz, /* c */
&&case_baz, /* d */
&&case_xxx, /* e */
&&case_yyy /* f */
};

goto *(jumps[node>>60]);

case_foo:
/* foo code here */
return 42;

case_bar:
/* bar code here */
return 18;

case_baz:
/* baz code here */
return 34;

case_xxx:
/* xxx code here */
return 63;

case_yyy:
/* yyy code here */
return 81;

}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:39    [W:0.101 / U:24.048 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site