// 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); } }
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; }
void cmpb() { cmp8(rb); }
void cmpa() { cmp8(ra); }