Revision 27a7797b tcg/ppc/tcg-target.c

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