Revision 27a7797b
b/tcg/ppc/tcg-target.c | ||
---|---|---|
1147 | 1147 |
| ME (31) |
1148 | 1148 |
) |
1149 | 1149 |
); |
1150 |
return;
|
|
1150 |
break;
|
|
1151 | 1151 |
|
1152 | 1152 |
case TCG_COND_NE: |
1153 | 1153 |
if (const_arg2) { |
... | ... | |
1178 | 1178 |
tcg_out32 (s, ADDIC | RT (arg0) | RA (arg) | 0xffff); |
1179 | 1179 |
tcg_out32 (s, SUBFE | TAB (arg0, arg0, arg)); |
1180 | 1180 |
} |
1181 |
return; |
|
1181 |
break; |
|
1182 |
|
|
1183 |
case TCG_COND_GT: |
|
1184 |
case TCG_COND_GTU: |
|
1185 |
sh = 30; |
|
1186 |
crop = 0; |
|
1187 |
goto crtest; |
|
1182 | 1188 |
|
1183 |
case TCG_COND_LTU: |
|
1184 | 1189 |
case TCG_COND_LT: |
1190 |
case TCG_COND_LTU: |
|
1185 | 1191 |
sh = 29; |
1186 | 1192 |
crop = 0; |
1187 |
break;
|
|
1193 |
goto crtest;
|
|
1188 | 1194 |
|
1189 |
case TCG_COND_GEU: |
|
1190 | 1195 |
case TCG_COND_GE: |
1196 |
case TCG_COND_GEU: |
|
1191 | 1197 |
sh = 31; |
1192 | 1198 |
crop = CRNOR | BT (7, CR_EQ) | BA (7, CR_LT) | BB (7, CR_LT); |
1193 |
break;
|
|
1199 |
goto crtest;
|
|
1194 | 1200 |
|
1195 |
case TCG_COND_LEU: |
|
1196 | 1201 |
case TCG_COND_LE: |
1202 |
case TCG_COND_LEU: |
|
1197 | 1203 |
sh = 31; |
1198 | 1204 |
crop = CRNOR | BT (7, CR_EQ) | BA (7, CR_GT) | BB (7, CR_GT); |
1199 |
break; |
|
1200 |
|
|
1201 |
case TCG_COND_GTU: |
|
1202 |
case TCG_COND_GT: |
|
1203 |
sh = 30; |
|
1204 |
crop = 0; |
|
1205 |
crtest: |
|
1206 |
tcg_out_cmp (s, cond, arg1, arg2, const_arg2, 7); |
|
1207 |
if (crop) tcg_out32 (s, crop); |
|
1208 |
tcg_out32 (s, MFCR | RT (0)); |
|
1209 |
tcg_out32 (s, (RLWINM |
|
1210 |
| RA (arg0) |
|
1211 |
| RS (0) |
|
1212 |
| SH (sh) |
|
1213 |
| MB (31) |
|
1214 |
| ME (31) |
|
1215 |
) |
|
1216 |
); |
|
1205 | 1217 |
break; |
1206 | 1218 |
|
1207 | 1219 |
default: |
1208 | 1220 |
tcg_abort (); |
1209 | 1221 |
} |
1210 |
|
|
1211 |
tcg_out_cmp (s, cond, arg1, arg2, const_arg2, 7); |
|
1212 |
if (crop) tcg_out32 (s, crop); |
|
1213 |
tcg_out32 (s, MFCR | RT (0)); |
|
1214 |
tcg_out32 (s, (RLWINM |
|
1215 |
| RA (arg0) |
|
1216 |
| RS (0) |
|
1217 |
| SH (sh) |
|
1218 |
| MB (31) |
|
1219 |
| ME (31) |
|
1220 |
) |
|
1221 |
); |
|
1222 | 1222 |
} |
1223 | 1223 |
|
1224 | 1224 |
static void tcg_out_setcond2 (TCGContext *s, const TCGArg *args, |
Also available in: Unified diff