Revision e854b6d3 tcg/arm/tcg-target.c
b/tcg/arm/tcg-target.c | ||
---|---|---|
499 | 499 |
} |
500 | 500 |
} |
501 | 501 |
|
502 |
static inline void tcg_out_ext8u(TCGContext *s, int cond, |
|
503 |
int rd, int rn) |
|
504 |
{ |
|
505 |
tcg_out_dat_imm(s, cond, ARITH_AND, rd, rn, 0xff); |
|
506 |
} |
|
507 |
|
|
502 | 508 |
static inline void tcg_out_ext16s(TCGContext *s, int cond, |
503 | 509 |
int rd, int rn) |
504 | 510 |
{ |
... | ... | |
1017 | 1023 |
|
1018 | 1024 |
switch (opc) { |
1019 | 1025 |
case 0 | 4: |
1020 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1021 |
TCG_REG_R0, 0, TCG_REG_R0, SHIFT_IMM_LSL(24)); |
|
1022 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1023 |
data_reg, 0, TCG_REG_R0, SHIFT_IMM_ASR(24)); |
|
1026 |
tcg_out_ext8s(s, COND_AL, data_reg, TCG_REG_R0); |
|
1024 | 1027 |
break; |
1025 | 1028 |
case 1 | 4: |
1026 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1027 |
TCG_REG_R0, 0, TCG_REG_R0, SHIFT_IMM_LSL(16)); |
|
1028 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1029 |
data_reg, 0, TCG_REG_R0, SHIFT_IMM_ASR(16)); |
|
1029 |
tcg_out_ext16s(s, COND_AL, data_reg, TCG_REG_R0); |
|
1030 | 1030 |
break; |
1031 | 1031 |
case 0: |
1032 | 1032 |
case 1: |
... | ... | |
1191 | 1191 |
# if TARGET_LONG_BITS == 32 |
1192 | 1192 |
switch (opc) { |
1193 | 1193 |
case 0: |
1194 |
tcg_out_dat_imm(s, COND_AL, ARITH_AND, TCG_REG_R1, data_reg, 0xff);
|
|
1194 |
tcg_out_ext8u(s, COND_AL, TCG_REG_R1, data_reg);
|
|
1195 | 1195 |
tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R2, 0, mem_index); |
1196 | 1196 |
break; |
1197 | 1197 |
case 1: |
1198 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1199 |
TCG_REG_R1, 0, data_reg, SHIFT_IMM_LSL(16)); |
|
1200 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1201 |
TCG_REG_R1, 0, TCG_REG_R1, SHIFT_IMM_LSR(16)); |
|
1198 |
tcg_out_ext16u(s, COND_AL, TCG_REG_R1, data_reg); |
|
1202 | 1199 |
tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R2, 0, mem_index); |
1203 | 1200 |
break; |
1204 | 1201 |
case 2: |
... | ... | |
1227 | 1224 |
} |
1228 | 1225 |
switch (opc) { |
1229 | 1226 |
case 0: |
1230 |
tcg_out_dat_imm(s, COND_AL, ARITH_AND, TCG_REG_R2, data_reg, 0xff);
|
|
1227 |
tcg_out_ext8u(s, COND_AL, TCG_REG_R2, data_reg);
|
|
1231 | 1228 |
tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R3, 0, mem_index); |
1232 | 1229 |
break; |
1233 | 1230 |
case 1: |
1234 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1235 |
TCG_REG_R2, 0, data_reg, SHIFT_IMM_LSL(16)); |
|
1236 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1237 |
TCG_REG_R2, 0, TCG_REG_R2, SHIFT_IMM_LSR(16)); |
|
1231 |
tcg_out_ext16u(s, COND_AL, TCG_REG_R2, data_reg); |
|
1238 | 1232 |
tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R3, 0, mem_index); |
1239 | 1233 |
break; |
1240 | 1234 |
case 2: |
Also available in: Unified diff