// lcmp bytecode
void C1_MacroAssembler::lcmp2int(Register Rdst, Register Rleft, Register Rright) {
  if (Rdst != Rleft && Rdst != Rright) {
    Label done;
    mov8u  (Rdst, -1, true);
    cmp8   (Rright, Rleft);
    jgt    (done);            // Rdst=-1 if greater
    setnz  (Rdst);            // Rdst=0 if equal, or 1 if less
    movzx81(Rdst, Rdst);
    bind   (done);
  } else {
Label less,done;
    cmp8   (Rright, Rleft);
    jgt    (less);           // Rdst=-1 if greater
    setnz  (Rdst);           // Rdst=0 if equal, or 1 if less
    movzx81(Rdst, Rdst);
jmp(done);
bind(less);
    mov8u  (Rdst, -1, true);
    bind   (done);
  }
}
Пример #2
0
int main()
{
	int a = A, b = B;
	unsigned ua = uA;
	unsigned ub = uB;
	unsigned uc = uC;

	printf("cmp1(%d, %d) = %d\n", a, b, cmp1(a, b));
	printf("cmp2(%d, %d) = %d\n", a, b, cmp2(a, b));
	printf("cmp3(%d) = %d\n", a, cmp3(a));
	printf("cmp4(%d) = %d\n", a, cmp4(a));
	printf("cmp5(%d) = %d\n", a, cmp5(a));
	printf("cmp6(%d) = %d\n", a, cmp6(a));
	printf("cmp7(%d) = %d\n", a, cmp7(a));
	printf("cmp8(%d) = %d\n", a, cmp8(a));
	printf("cmp9(%d, %d) = %d\n", a, b, cmp9(a, b));
	printf("cmp10(%d, %d) = %d\n", a, b, cmp10(a, b));
	printf("cmp11(%d) = %d\n", a, cmp11(a));
	printf("cmp12(%d) = %d\n", a, cmp12(a));
	printf("cmp13(%d) = %d\n", a, cmp13(a));
	printf("cmp14(%d) = %d\n", a, cmp14(a));
	printf("cmp15(%d) = %d\n", a, cmp15(a));
	printf("cmp16(%d) = %d\n", a, cmp16(a));
	printf("cmp17(%d, %d) = %d\n", a, b, cmp17(a, b));
	printf("cmp18(%d, %d) = %d\n", a, b, cmp18(a, b));

	printf("cmp19(%u, %u) = %d\n", ua, ub, cmp19(ua, ub));
	printf("cmp20(%u, %u) = %d\n", ua, ub, cmp20(ua, ub));
	printf("cmp21(%u, %u) = %d\n", ua, ub, cmp21(ua, ub));
	printf("cmp22(%u, %u) = %d\n", ua, ub, cmp22(ua, ub));
	printf("cmp23(%u, %u) = %d\n", ua, ub, cmp23(ua, ub));

	printf("cmp19(%u, %u) = %d\n", ua, uc, cmp19(ua, uc));
	printf("cmp20(%u, %u) = %d\n", ua, uc, cmp20(ua, uc));
	printf("cmp21(%u, %u) = %d\n", ua, uc, cmp21(ua, uc));
	printf("cmp22(%u, %u) = %d\n", ua, uc, cmp22(ua, uc));
	printf("cmp23(%u, %u) = %d\n", ua, uc, cmp23(ua, uc));

	return 0;
}
Пример #3
0
void cmpb()
{
  cmp8(rb);
}
Пример #4
0
void cmpa()
{
  cmp8(ra);
}