[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [4588] Fix signed/unsigned issues of immediate version of b
From: |
Fabrice Bellard |
Subject: |
[Qemu-devel] [4588] Fix signed/unsigned issues of immediate version of brcond (malc) |
Date: |
Mon, 26 May 2008 19:11:08 +0000 |
Revision: 4588
http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4588
Author: bellard
Date: 2008-05-26 19:11:07 +0000 (Mon, 26 May 2008)
Log Message:
-----------
Fix signed/unsigned issues of immediate version of brcond (malc)
Modified Paths:
--------------
trunk/tcg/ppc/tcg-target.c
Modified: trunk/tcg/ppc/tcg-target.c
===================================================================
--- trunk/tcg/ppc/tcg-target.c 2008-05-26 17:53:41 UTC (rev 4587)
+++ trunk/tcg/ppc/tcg-target.c 2008-05-26 19:11:07 UTC (rev 4588)
@@ -866,18 +866,55 @@
int imm;
uint32_t op;
- imm = const_arg2 ? ((int16_t) arg2 == arg2) : 0;
switch (cond) {
- case TCG_COND_EQ: op = imm ? CMPLI : CMPL; break;
- case TCG_COND_NE: op = imm ? CMPLI : CMPL; break;
- case TCG_COND_LT: op = imm ? CMPI : CMP; break;
- case TCG_COND_GE: op = imm ? CMPI : CMP; break;
- case TCG_COND_LE: op = imm ? CMPI : CMP; break;
- case TCG_COND_GT: op = imm ? CMPI : CMP; break;
- case TCG_COND_LTU: op = imm ? CMPLI : CMPL; break;
- case TCG_COND_GEU: op = imm ? CMPLI : CMPL; break;
- case TCG_COND_LEU: op = imm ? CMPLI : CMPL; break;
- case TCG_COND_GTU: op = imm ? CMPLI : CMPL; break;
+ case TCG_COND_EQ:
+ case TCG_COND_NE:
+ if (const_arg2) {
+ if ((int16_t) arg2 == arg2) {
+ op = CMPI;
+ imm = 1;
+ break;
+ }
+ else if ((uint16_t) arg2 == arg2) {
+ op = CMPLI;
+ imm = 1;
+ break;
+ }
+ }
+ op = CMPL;
+ imm = 0;
+ break;
+
+ case TCG_COND_LT:
+ case TCG_COND_GE:
+ case TCG_COND_LE:
+ case TCG_COND_GT:
+ if (const_arg2) {
+ if ((int16_t) arg2 == arg2) {
+ op = CMPI;
+ imm = 1;
+ break;
+ }
+ }
+ op = CMP;
+ imm = 0;
+ break;
+
+ case TCG_COND_LTU:
+ case TCG_COND_GEU:
+ case TCG_COND_LEU:
+ case TCG_COND_GTU:
+ if (const_arg2) {
+ if ((uint16_t) arg2 == arg2) {
+ op = CMPLI;
+ imm = 1;
+ break;
+ }
+ }
+ op = CMPL;
+ imm = 0;
+ break;
+
default:
tcg_abort ();
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [4588] Fix signed/unsigned issues of immediate version of brcond (malc),
Fabrice Bellard <=