Mac Intel

Joel Reymont <>
Tue Aug 15 03:24:31 CEST 2006


Daniel and Mikael,

Could you please give me some insight into skip_sse2_insn?

I'm bombing out on MULSD which has the opcode of F2 0F 59 /r.

In the code below what's the significance of "if( (opcode & 0xF0) ==  
0x40 )"? It does not seem to apply to me as my opcode at that point  
is 0x0F but I still need to move forward to 0x59.

     opcode = *pc++;
     switch( opcode ) {
     case 0x66: case 0xF2: case 0xF3:
	opcode = *pc++;
     }
     if( (opcode & 0xF0) == 0x40 )
	opcode = *pc++;
     do {
	switch( opcode ) {
	case 0x0F:
	    opcode = *pc++;
	    switch( opcode ) {
	    case 0x2A: /* cvtpi2ps,cvtsi2sd,cvtsi2ss /r */
	    case 0x2C: /* cvttpd2pi,cvttps2pi,cvttsd2si,cvtss2si /r */
	    case 0x2D: /* cvtpd2pi,cvtps2pi,cvtsd2si,cvtss2si /r */
	    case 0x2E: /* ucomisd,ucomiss /r */
	    case 0x2F: /* comisd,comiss /r */
	    case 0x51: /* sqrtpd,sqrtps,sqrtsd,sqrtss /r */
	    case 0x58: /* addpd,addps,addsd,addss /r */
	    case 0x59: /* mulpd,mulps,mulsd,mulss /r */

	Thanks, Joel




More information about the erlang-questions mailing list