Revision e30b4678

b/target-sparc/cpu.h
284 284
#define CPU_FEATURE_FMUL     (1 << 7)
285 285
#define CPU_FEATURE_VIS1     (1 << 8)
286 286
#define CPU_FEATURE_VIS2     (1 << 9)
287
#define CPU_FEATURE_FSMULD   (1 << 10)
287 288
#ifndef TARGET_SPARC64
288 289
#define CPU_DEFAULT_FEATURES (CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP |  \
289 290
                              CPU_FEATURE_MUL | CPU_FEATURE_DIV |     \
290 291
                              CPU_FEATURE_FLUSH | CPU_FEATURE_FSQRT | \
291
                              CPU_FEATURE_FMUL)
292
                              CPU_FEATURE_FMUL | CPU_FEATURE_FSMULD)
292 293
#else
293 294
#define CPU_DEFAULT_FEATURES (CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP |  \
294 295
                              CPU_FEATURE_MUL | CPU_FEATURE_DIV |     \
295 296
                              CPU_FEATURE_FLUSH | CPU_FEATURE_FSQRT | \
296 297
                              CPU_FEATURE_FMUL | CPU_FEATURE_VIS1 |   \
297
                              CPU_FEATURE_VIS2)
298
                              CPU_FEATURE_VIS2 | CPU_FEATURE_FSMULD)
298 299
#endif
299 300

  
300 301
#if defined(TARGET_SPARC64)
b/target-sparc/helper.c
1098 1098
        .mmu_cxr_mask = 0x0000003f,
1099 1099
        .mmu_sfsr_mask = 0xffffffff,
1100 1100
        .mmu_trcr_mask = 0xffffffff,
1101
        .features = CPU_FEATURE_FLOAT,
1101
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_FSMULD,
1102 1102
    },
1103 1103
    {
1104 1104
        .name = "Fujitsu MB86904",
......
1134 1134
        .mmu_cxr_mask = 0x0000003f,
1135 1135
        .mmu_sfsr_mask = 0xffffffff,
1136 1136
        .mmu_trcr_mask = 0xffffffff,
1137
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | CPU_FEATURE_FSQRT,
1137
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | CPU_FEATURE_FSQRT |
1138
        CPU_FEATURE_FSMULD,
1138 1139
    },
1139 1140
    {
1140 1141
        .name = "Cypress CY7C601",
......
1146 1147
        .mmu_cxr_mask = 0x0000003f,
1147 1148
        .mmu_sfsr_mask = 0xffffffff,
1148 1149
        .mmu_trcr_mask = 0xffffffff,
1149
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | CPU_FEATURE_FSQRT,
1150
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | CPU_FEATURE_FSQRT |
1151
        CPU_FEATURE_FSMULD,
1150 1152
    },
1151 1153
    {
1152 1154
        .name = "Cypress CY7C611",
......
1158 1160
        .mmu_cxr_mask = 0x0000003f,
1159 1161
        .mmu_sfsr_mask = 0xffffffff,
1160 1162
        .mmu_trcr_mask = 0xffffffff,
1161
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | CPU_FEATURE_FSQRT,
1163
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | CPU_FEATURE_FSQRT |
1164
        CPU_FEATURE_FSMULD,
1162 1165
    },
1163 1166
    {
1164 1167
        .name = "TI SuperSparc II",
......
1182 1185
        .mmu_cxr_mask = 0x0000003f,
1183 1186
        .mmu_sfsr_mask = 0x00016fff,
1184 1187
        .mmu_trcr_mask = 0x0000003f,
1185
        .features = CPU_DEFAULT_FEATURES,
1188
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | CPU_FEATURE_MUL |
1189
        CPU_FEATURE_DIV | CPU_FEATURE_FLUSH | CPU_FEATURE_FSQRT |
1190
        CPU_FEATURE_FMUL,
1186 1191
    },
1187 1192
    {
1188 1193
        .name = "TI MicroSparc II",
......
1266 1271
        .mmu_cxr_mask = 0x0000003f,
1267 1272
        .mmu_sfsr_mask = 0xffffffff,
1268 1273
        .mmu_trcr_mask = 0xffffffff,
1269
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | CPU_FEATURE_FSQRT,
1274
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | CPU_FEATURE_FSQRT |
1275
        CPU_FEATURE_FSMULD,
1270 1276
    },
1271 1277
    {
1272 1278
        .name = "Matsushita MN10501",
......
1278 1284
        .mmu_cxr_mask = 0x0000003f,
1279 1285
        .mmu_sfsr_mask = 0xffffffff,
1280 1286
        .mmu_trcr_mask = 0xffffffff,
1281
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_MUL | CPU_FEATURE_FSQRT,
1287
        .features = CPU_FEATURE_FLOAT | CPU_FEATURE_MUL | CPU_FEATURE_FSQRT |
1288
        CPU_FEATURE_FSMULD,
1282 1289
    },
1283 1290
    {
1284 1291
        .name = "Weitek W8601",
......
1330 1337
    "fmul",
1331 1338
    "vis1",
1332 1339
    "vis2",
1340
    "fsmuld",
1333 1341
};
1334 1342

  
1335 1343
static void print_features(FILE *f,
b/target-sparc/translate.c
2511 2511
                        gen_op_store_QT0_fpr(QFPREG(rd));
2512 2512
                        break;
2513 2513
                    case 0x69:
2514
                        CHECK_FPU_FEATURE(dc, FSMULD);
2514 2515
                        gen_op_load_fpr_FT0(rs1);
2515 2516
                        gen_op_load_fpr_FT1(rs2);
2516 2517
                        gen_clear_float_exceptions();

Also available in: Unified diff