Revision b068d6a7 target-ppc/op_mem.h

b/target-ppc/op_mem.h
18 18
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 19
 */
20 20

  
21
static inline uint16_t glue(ld16r, MEMSUFFIX) (target_ulong EA)
21
static always_inline uint16_t glue(ld16r, MEMSUFFIX) (target_ulong EA)
22 22
{
23 23
    uint16_t tmp = glue(lduw, MEMSUFFIX)(EA);
24 24
    return ((tmp & 0xFF00) >> 8) | ((tmp & 0x00FF) << 8);
25 25
}
26 26

  
27
static inline int32_t glue(ld16rs, MEMSUFFIX) (target_ulong EA)
27
static always_inline int32_t glue(ld16rs, MEMSUFFIX) (target_ulong EA)
28 28
{
29 29
    int16_t tmp = glue(lduw, MEMSUFFIX)(EA);
30 30
    return (int16_t)((tmp & 0xFF00) >> 8) | ((tmp & 0x00FF) << 8);
31 31
}
32 32

  
33
static inline uint32_t glue(ld32r, MEMSUFFIX) (target_ulong EA)
33
static always_inline uint32_t glue(ld32r, MEMSUFFIX) (target_ulong EA)
34 34
{
35 35
    uint32_t tmp = glue(ldl, MEMSUFFIX)(EA);
36 36
    return ((tmp & 0xFF000000) >> 24) | ((tmp & 0x00FF0000) >> 8) |
......
38 38
}
39 39

  
40 40
#if defined(TARGET_PPC64) || defined(TARGET_PPCEMB)
41
static inline uint64_t glue(ld64r, MEMSUFFIX) (target_ulong EA)
41
static always_inline uint64_t glue(ld64r, MEMSUFFIX) (target_ulong EA)
42 42
{
43 43
    uint64_t tmp = glue(ldq, MEMSUFFIX)(EA);
44 44
    return ((tmp & 0xFF00000000000000ULL) >> 56) |
......
53 53
#endif
54 54

  
55 55
#if defined(TARGET_PPC64)
56
static inline int64_t glue(ldsl, MEMSUFFIX) (target_ulong EA)
56
static always_inline int64_t glue(ldsl, MEMSUFFIX) (target_ulong EA)
57 57
{
58 58
    return (int32_t)glue(ldl, MEMSUFFIX)(EA);
59 59
}
60 60

  
61
static inline int64_t glue(ld32rs, MEMSUFFIX) (target_ulong EA)
61
static always_inline int64_t glue(ld32rs, MEMSUFFIX) (target_ulong EA)
62 62
{
63 63
    uint32_t tmp = glue(ldl, MEMSUFFIX)(EA);
64 64
    return (int32_t)((tmp & 0xFF000000) >> 24) | ((tmp & 0x00FF0000) >> 8) |
......
66 66
}
67 67
#endif
68 68

  
69
static inline void glue(st16r, MEMSUFFIX) (target_ulong EA, uint16_t data)
69
static always_inline void glue(st16r, MEMSUFFIX) (target_ulong EA,
70
                                                  uint16_t data)
70 71
{
71 72
    uint16_t tmp = ((data & 0xFF00) >> 8) | ((data & 0x00FF) << 8);
72 73
    glue(stw, MEMSUFFIX)(EA, tmp);
73 74
}
74 75

  
75
static inline void glue(st32r, MEMSUFFIX) (target_ulong EA, uint32_t data)
76
static always_inline void glue(st32r, MEMSUFFIX) (target_ulong EA,
77
                                                  uint32_t data)
76 78
{
77 79
    uint32_t tmp = ((data & 0xFF000000) >> 24) | ((data & 0x00FF0000) >> 8) |
78 80
        ((data & 0x0000FF00) << 8) | ((data & 0x000000FF) << 24);
......
80 82
}
81 83

  
82 84
#if defined(TARGET_PPC64) || defined(TARGET_PPCEMB)
83
static inline void glue(st64r, MEMSUFFIX) (target_ulong EA, uint64_t data)
85
static always_inline void glue(st64r, MEMSUFFIX) (target_ulong EA,
86
                                                  uint64_t data)
84 87
{
85 88
    uint64_t tmp = ((data & 0xFF00000000000000ULL) >> 56) |
86 89
        ((data & 0x00FF000000000000ULL) >> 40) |
......
403 406
}
404 407
#endif
405 408

  
406
static inline void glue(stfs, MEMSUFFIX) (target_ulong EA, double d)
409
static always_inline void glue(stfs, MEMSUFFIX) (target_ulong EA, double d)
407 410
{
408 411
    glue(stfl, MEMSUFFIX)(EA, float64_to_float32(d, &env->fp_status));
409 412
}
410 413

  
411
static inline void glue(stfiwx, MEMSUFFIX) (target_ulong EA, double d)
414
static always_inline void glue(stfiwx, MEMSUFFIX) (target_ulong EA, double d)
412 415
{
413 416
    union {
414 417
        double d;
......
429 432
PPC_STF_OP_64(fiwx, stfiwx);
430 433
#endif
431 434

  
432
static inline void glue(stfqr, MEMSUFFIX) (target_ulong EA, double d)
435
static always_inline void glue(stfqr, MEMSUFFIX) (target_ulong EA, double d)
433 436
{
434 437
    union {
435 438
        double d;
......
448 451
    glue(stfq, MEMSUFFIX)(EA, u.d);
449 452
}
450 453

  
451
static inline void glue(stfsr, MEMSUFFIX) (target_ulong EA, double d)
454
static always_inline void glue(stfsr, MEMSUFFIX) (target_ulong EA, double d)
452 455
{
453 456
    union {
454 457
        float f;
......
463 466
    glue(stfl, MEMSUFFIX)(EA, u.f);
464 467
}
465 468

  
466
static inline void glue(stfiwxr, MEMSUFFIX) (target_ulong EA, double d)
469
static always_inline void glue(stfiwxr, MEMSUFFIX) (target_ulong EA, double d)
467 470
{
468 471
    union {
469 472
        double d;
......
506 509
}
507 510
#endif
508 511

  
509
static inline double glue(ldfs, MEMSUFFIX) (target_ulong EA)
512
static always_inline double glue(ldfs, MEMSUFFIX) (target_ulong EA)
510 513
{
511 514
    return float32_to_float64(glue(ldfl, MEMSUFFIX)(EA), &env->fp_status);
512 515
}
......
518 521
PPC_LDF_OP_64(fs, ldfs);
519 522
#endif
520 523

  
521
static inline double glue(ldfqr, MEMSUFFIX) (target_ulong EA)
524
static always_inline double glue(ldfqr, MEMSUFFIX) (target_ulong EA)
522 525
{
523 526
    union {
524 527
        double d;
......
538 541
    return u.d;
539 542
}
540 543

  
541
static inline double glue(ldfsr, MEMSUFFIX) (target_ulong EA)
544
static always_inline double glue(ldfsr, MEMSUFFIX) (target_ulong EA)
542 545
{
543 546
    union {
544 547
        float f;
......
1105 1108
PPC_SPE_LD_OP(dd_le, ld64r);
1106 1109
PPC_SPE_ST_OP(dd_le, st64r);
1107 1110
#endif
1108
static inline uint64_t glue(spe_ldw, MEMSUFFIX) (target_ulong EA)
1111
static always_inline uint64_t glue(spe_ldw, MEMSUFFIX) (target_ulong EA)
1109 1112
{
1110 1113
    uint64_t ret;
1111 1114
    ret = (uint64_t)glue(ldl, MEMSUFFIX)(EA) << 32;
......
1113 1116
    return ret;
1114 1117
}
1115 1118
PPC_SPE_LD_OP(dw, spe_ldw);
1116
static inline void glue(spe_stdw, MEMSUFFIX) (target_ulong EA, uint64_t data)
1119
static always_inline void glue(spe_stdw, MEMSUFFIX) (target_ulong EA,
1120
                                                     uint64_t data)
1117 1121
{
1118 1122
    glue(stl, MEMSUFFIX)(EA, data >> 32);
1119 1123
    glue(stl, MEMSUFFIX)(EA + 4, data);
1120 1124
}
1121 1125
PPC_SPE_ST_OP(dw, spe_stdw);
1122
static inline uint64_t glue(spe_ldw_le, MEMSUFFIX) (target_ulong EA)
1126
static always_inline uint64_t glue(spe_ldw_le, MEMSUFFIX) (target_ulong EA)
1123 1127
{
1124 1128
    uint64_t ret;
1125 1129
    ret = (uint64_t)glue(ld32r, MEMSUFFIX)(EA) << 32;
......
1127 1131
    return ret;
1128 1132
}
1129 1133
PPC_SPE_LD_OP(dw_le, spe_ldw_le);
1130
static inline void glue(spe_stdw_le, MEMSUFFIX) (target_ulong EA,
1131
                                                 uint64_t data)
1134
static always_inline void glue(spe_stdw_le, MEMSUFFIX) (target_ulong EA,
1135
                                                        uint64_t data)
1132 1136
{
1133 1137
    glue(st32r, MEMSUFFIX)(EA, data >> 32);
1134 1138
    glue(st32r, MEMSUFFIX)(EA + 4, data);
1135 1139
}
1136 1140
PPC_SPE_ST_OP(dw_le, spe_stdw_le);
1137
static inline uint64_t glue(spe_ldh, MEMSUFFIX) (target_ulong EA)
1141
static always_inline uint64_t glue(spe_ldh, MEMSUFFIX) (target_ulong EA)
1138 1142
{
1139 1143
    uint64_t ret;
1140 1144
    ret = (uint64_t)glue(lduw, MEMSUFFIX)(EA) << 48;
......
1144 1148
    return ret;
1145 1149
}
1146 1150
PPC_SPE_LD_OP(dh, spe_ldh);
1147
static inline void glue(spe_stdh, MEMSUFFIX) (target_ulong EA, uint64_t data)
1151
static always_inline void glue(spe_stdh, MEMSUFFIX) (target_ulong EA,
1152
                                                     uint64_t data)
1148 1153
{
1149 1154
    glue(stw, MEMSUFFIX)(EA, data >> 48);
1150 1155
    glue(stw, MEMSUFFIX)(EA + 2, data >> 32);
......
1152 1157
    glue(stw, MEMSUFFIX)(EA + 6, data);
1153 1158
}
1154 1159
PPC_SPE_ST_OP(dh, spe_stdh);
1155
static inline uint64_t glue(spe_ldh_le, MEMSUFFIX) (target_ulong EA)
1160
static always_inline uint64_t glue(spe_ldh_le, MEMSUFFIX) (target_ulong EA)
1156 1161
{
1157 1162
    uint64_t ret;
1158 1163
    ret = (uint64_t)glue(ld16r, MEMSUFFIX)(EA) << 48;
......
1162 1167
    return ret;
1163 1168
}
1164 1169
PPC_SPE_LD_OP(dh_le, spe_ldh_le);
1165
static inline void glue(spe_stdh_le, MEMSUFFIX) (target_ulong EA,
1166
                                                 uint64_t data)
1170
static always_inline void glue(spe_stdh_le, MEMSUFFIX) (target_ulong EA,
1171
                                                        uint64_t data)
1167 1172
{
1168 1173
    glue(st16r, MEMSUFFIX)(EA, data >> 48);
1169 1174
    glue(st16r, MEMSUFFIX)(EA + 2, data >> 32);
......
1171 1176
    glue(st16r, MEMSUFFIX)(EA + 6, data);
1172 1177
}
1173 1178
PPC_SPE_ST_OP(dh_le, spe_stdh_le);
1174
static inline uint64_t glue(spe_lwhe, MEMSUFFIX) (target_ulong EA)
1179
static always_inline uint64_t glue(spe_lwhe, MEMSUFFIX) (target_ulong EA)
1175 1180
{
1176 1181
    uint64_t ret;
1177 1182
    ret = (uint64_t)glue(lduw, MEMSUFFIX)(EA) << 48;
......
1179 1184
    return ret;
1180 1185
}
1181 1186
PPC_SPE_LD_OP(whe, spe_lwhe);
1182
static inline void glue(spe_stwhe, MEMSUFFIX) (target_ulong EA, uint64_t data)
1187
static always_inline void glue(spe_stwhe, MEMSUFFIX) (target_ulong EA,
1188
                                                      uint64_t data)
1183 1189
{
1184 1190
    glue(stw, MEMSUFFIX)(EA, data >> 48);
1185 1191
    glue(stw, MEMSUFFIX)(EA + 2, data >> 16);
1186 1192
}
1187 1193
PPC_SPE_ST_OP(whe, spe_stwhe);
1188
static inline uint64_t glue(spe_lwhe_le, MEMSUFFIX) (target_ulong EA)
1194
static always_inline uint64_t glue(spe_lwhe_le, MEMSUFFIX) (target_ulong EA)
1189 1195
{
1190 1196
    uint64_t ret;
1191 1197
    ret = (uint64_t)glue(ld16r, MEMSUFFIX)(EA) << 48;
......
1193 1199
    return ret;
1194 1200
}
1195 1201
PPC_SPE_LD_OP(whe_le, spe_lwhe_le);
1196
static inline void glue(spe_stwhe_le, MEMSUFFIX) (target_ulong EA,
1197
                                                  uint64_t data)
1202
static always_inline void glue(spe_stwhe_le, MEMSUFFIX) (target_ulong EA,
1203
                                                         uint64_t data)
1198 1204
{
1199 1205
    glue(st16r, MEMSUFFIX)(EA, data >> 48);
1200 1206
    glue(st16r, MEMSUFFIX)(EA + 2, data >> 16);
1201 1207
}
1202 1208
PPC_SPE_ST_OP(whe_le, spe_stwhe_le);
1203
static inline uint64_t glue(spe_lwhou, MEMSUFFIX) (target_ulong EA)
1209
static always_inline uint64_t glue(spe_lwhou, MEMSUFFIX) (target_ulong EA)
1204 1210
{
1205 1211
    uint64_t ret;
1206 1212
    ret = (uint64_t)glue(lduw, MEMSUFFIX)(EA) << 32;
......
1208 1214
    return ret;
1209 1215
}
1210 1216
PPC_SPE_LD_OP(whou, spe_lwhou);
1211
static inline uint64_t glue(spe_lwhos, MEMSUFFIX) (target_ulong EA)
1217
static always_inline uint64_t glue(spe_lwhos, MEMSUFFIX) (target_ulong EA)
1212 1218
{
1213 1219
    uint64_t ret;
1214 1220
    ret = ((uint64_t)((int32_t)glue(ldsw, MEMSUFFIX)(EA))) << 32;
......
1216 1222
    return ret;
1217 1223
}
1218 1224
PPC_SPE_LD_OP(whos, spe_lwhos);
1219
static inline void glue(spe_stwho, MEMSUFFIX) (target_ulong EA, uint64_t data)
1225
static always_inline void glue(spe_stwho, MEMSUFFIX) (target_ulong EA,
1226
                                                      uint64_t data)
1220 1227
{
1221 1228
    glue(stw, MEMSUFFIX)(EA, data >> 32);
1222 1229
    glue(stw, MEMSUFFIX)(EA + 2, data);
1223 1230
}
1224 1231
PPC_SPE_ST_OP(who, spe_stwho);
1225
static inline uint64_t glue(spe_lwhou_le, MEMSUFFIX) (target_ulong EA)
1232
static always_inline uint64_t glue(spe_lwhou_le, MEMSUFFIX) (target_ulong EA)
1226 1233
{
1227 1234
    uint64_t ret;
1228 1235
    ret = (uint64_t)glue(ld16r, MEMSUFFIX)(EA) << 32;
......
1230 1237
    return ret;
1231 1238
}
1232 1239
PPC_SPE_LD_OP(whou_le, spe_lwhou_le);
1233
static inline uint64_t glue(spe_lwhos_le, MEMSUFFIX) (target_ulong EA)
1240
static always_inline uint64_t glue(spe_lwhos_le, MEMSUFFIX) (target_ulong EA)
1234 1241
{
1235 1242
    uint64_t ret;
1236 1243
    ret = ((uint64_t)((int32_t)glue(ld16rs, MEMSUFFIX)(EA))) << 32;
......
1238 1245
    return ret;
1239 1246
}
1240 1247
PPC_SPE_LD_OP(whos_le, spe_lwhos_le);
1241
static inline void glue(spe_stwho_le, MEMSUFFIX) (target_ulong EA,
1242
                                                  uint64_t data)
1248
static always_inline void glue(spe_stwho_le, MEMSUFFIX) (target_ulong EA,
1249
                                                         uint64_t data)
1243 1250
{
1244 1251
    glue(st16r, MEMSUFFIX)(EA, data >> 32);
1245 1252
    glue(st16r, MEMSUFFIX)(EA + 2, data);
1246 1253
}
1247 1254
PPC_SPE_ST_OP(who_le, spe_stwho_le);
1248 1255
#if !defined(TARGET_PPC64)
1249
static inline void glue(spe_stwwo, MEMSUFFIX) (target_ulong EA, uint64_t data)
1256
static always_inline void glue(spe_stwwo, MEMSUFFIX) (target_ulong EA,
1257
                                                      uint64_t data)
1250 1258
{
1251 1259
    glue(stl, MEMSUFFIX)(EA, data);
1252 1260
}
1253 1261
PPC_SPE_ST_OP(wwo, spe_stwwo);
1254
static inline void glue(spe_stwwo_le, MEMSUFFIX) (target_ulong EA,
1255
                                                  uint64_t data)
1262
static always_inline void glue(spe_stwwo_le, MEMSUFFIX) (target_ulong EA,
1263
                                                         uint64_t data)
1256 1264
{
1257 1265
    glue(st32r, MEMSUFFIX)(EA, data);
1258 1266
}
1259 1267
PPC_SPE_ST_OP(wwo_le, spe_stwwo_le);
1260 1268
#endif
1261
static inline uint64_t glue(spe_lh, MEMSUFFIX) (target_ulong EA)
1269
static always_inline uint64_t glue(spe_lh, MEMSUFFIX) (target_ulong EA)
1262 1270
{
1263 1271
    uint16_t tmp;
1264 1272
    tmp = glue(lduw, MEMSUFFIX)(EA);
1265 1273
    return ((uint64_t)tmp << 48) | ((uint64_t)tmp << 16);
1266 1274
}
1267 1275
PPC_SPE_LD_OP(h, spe_lh);
1268
static inline uint64_t glue(spe_lh_le, MEMSUFFIX) (target_ulong EA)
1276
static always_inline uint64_t glue(spe_lh_le, MEMSUFFIX) (target_ulong EA)
1269 1277
{
1270 1278
    uint16_t tmp;
1271 1279
    tmp = glue(ld16r, MEMSUFFIX)(EA);
1272 1280
    return ((uint64_t)tmp << 48) | ((uint64_t)tmp << 16);
1273 1281
}
1274 1282
PPC_SPE_LD_OP(h_le, spe_lh_le);
1275
static inline uint64_t glue(spe_lwwsplat, MEMSUFFIX) (target_ulong EA)
1283
static always_inline uint64_t glue(spe_lwwsplat, MEMSUFFIX) (target_ulong EA)
1276 1284
{
1277 1285
    uint32_t tmp;
1278 1286
    tmp = glue(ldl, MEMSUFFIX)(EA);
1279 1287
    return ((uint64_t)tmp << 32) | (uint64_t)tmp;
1280 1288
}
1281 1289
PPC_SPE_LD_OP(wwsplat, spe_lwwsplat);
1282
static inline uint64_t glue(spe_lwwsplat_le, MEMSUFFIX) (target_ulong EA)
1290
static always_inline
1291
uint64_t glue(spe_lwwsplat_le, MEMSUFFIX) (target_ulong EA)
1283 1292
{
1284 1293
    uint32_t tmp;
1285 1294
    tmp = glue(ld32r, MEMSUFFIX)(EA);
1286 1295
    return ((uint64_t)tmp << 32) | (uint64_t)tmp;
1287 1296
}
1288 1297
PPC_SPE_LD_OP(wwsplat_le, spe_lwwsplat_le);
1289
static inline uint64_t glue(spe_lwhsplat, MEMSUFFIX) (target_ulong EA)
1298
static always_inline uint64_t glue(spe_lwhsplat, MEMSUFFIX) (target_ulong EA)
1290 1299
{
1291 1300
    uint64_t ret;
1292 1301
    uint16_t tmp;
......
1297 1306
    return ret;
1298 1307
}
1299 1308
PPC_SPE_LD_OP(whsplat, spe_lwhsplat);
1300
static inline uint64_t glue(spe_lwhsplat_le, MEMSUFFIX) (target_ulong EA)
1309
static always_inline
1310
uint64_t glue(spe_lwhsplat_le, MEMSUFFIX) (target_ulong EA)
1301 1311
{
1302 1312
    uint64_t ret;
1303 1313
    uint16_t tmp;

Also available in: Unified diff