OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
6 // are met: | 6 // are met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 1050 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1061 } | 1061 } |
1062 } | 1062 } |
1063 | 1063 |
1064 | 1064 |
1065 void Assembler::sar_cl(const Operand& dst) { | 1065 void Assembler::sar_cl(const Operand& dst) { |
1066 EnsureSpace ensure_space(this); | 1066 EnsureSpace ensure_space(this); |
1067 EMIT(0xD3); | 1067 EMIT(0xD3); |
1068 emit_operand(edi, dst); | 1068 emit_operand(edi, dst); |
1069 } | 1069 } |
1070 | 1070 |
1071 | |
1072 void Assembler::sbb(Register dst, const Operand& src) { | 1071 void Assembler::sbb(Register dst, const Operand& src) { |
1073 EnsureSpace ensure_space(this); | 1072 EnsureSpace ensure_space(this); |
1074 EMIT(0x1B); | 1073 EMIT(0x1B); |
1075 emit_operand(dst, src); | 1074 emit_operand(dst, src); |
1076 } | 1075 } |
1077 | 1076 |
1078 void Assembler::shld(Register dst, Register src, uint8_t shift) { | 1077 void Assembler::shld(Register dst, Register src, uint8_t shift) { |
1079 DCHECK(is_uint5(shift)); | 1078 DCHECK(is_uint5(shift)); |
1080 EnsureSpace ensure_space(this); | 1079 EnsureSpace ensure_space(this); |
1081 EMIT(0x0F); | 1080 EMIT(0x0F); |
(...skipping 23 matching lines...) Expand all Loading... |
1105 } | 1104 } |
1106 } | 1105 } |
1107 | 1106 |
1108 | 1107 |
1109 void Assembler::shl_cl(const Operand& dst) { | 1108 void Assembler::shl_cl(const Operand& dst) { |
1110 EnsureSpace ensure_space(this); | 1109 EnsureSpace ensure_space(this); |
1111 EMIT(0xD3); | 1110 EMIT(0xD3); |
1112 emit_operand(esp, dst); | 1111 emit_operand(esp, dst); |
1113 } | 1112 } |
1114 | 1113 |
1115 | |
1116 void Assembler::shrd(Register dst, const Operand& src) { | |
1117 EnsureSpace ensure_space(this); | |
1118 EMIT(0x0F); | |
1119 EMIT(0xAD); | |
1120 emit_operand(dst, src); | |
1121 } | |
1122 | |
1123 | |
1124 void Assembler::shr(const Operand& dst, uint8_t imm8) { | 1114 void Assembler::shr(const Operand& dst, uint8_t imm8) { |
1125 EnsureSpace ensure_space(this); | 1115 EnsureSpace ensure_space(this); |
1126 DCHECK(is_uint5(imm8)); // illegal shift count | 1116 DCHECK(is_uint5(imm8)); // illegal shift count |
1127 if (imm8 == 1) { | 1117 if (imm8 == 1) { |
1128 EMIT(0xD1); | 1118 EMIT(0xD1); |
1129 emit_operand(ebp, dst); | 1119 emit_operand(ebp, dst); |
1130 } else { | 1120 } else { |
1131 EMIT(0xC1); | 1121 EMIT(0xC1); |
1132 emit_operand(ebp, dst); | 1122 emit_operand(ebp, dst); |
1133 EMIT(imm8); | 1123 EMIT(imm8); |
1134 } | 1124 } |
1135 } | 1125 } |
1136 | 1126 |
1137 | 1127 |
1138 void Assembler::shr_cl(const Operand& dst) { | 1128 void Assembler::shr_cl(const Operand& dst) { |
1139 EnsureSpace ensure_space(this); | 1129 EnsureSpace ensure_space(this); |
1140 EMIT(0xD3); | 1130 EMIT(0xD3); |
1141 emit_operand(ebp, dst); | 1131 emit_operand(ebp, dst); |
1142 } | 1132 } |
1143 | 1133 |
| 1134 void Assembler::shrd(Register dst, Register src, uint8_t shift) { |
| 1135 DCHECK(is_uint5(shift)); |
| 1136 EnsureSpace ensure_space(this); |
| 1137 EMIT(0x0F); |
| 1138 EMIT(0xAC); |
| 1139 emit_operand(dst, Operand(src)); |
| 1140 EMIT(shift); |
| 1141 } |
| 1142 |
| 1143 void Assembler::shrd_cl(const Operand& dst, Register src) { |
| 1144 EnsureSpace ensure_space(this); |
| 1145 EMIT(0x0F); |
| 1146 EMIT(0xAD); |
| 1147 emit_operand(src, dst); |
| 1148 } |
1144 | 1149 |
1145 void Assembler::sub(const Operand& dst, const Immediate& x) { | 1150 void Assembler::sub(const Operand& dst, const Immediate& x) { |
1146 EnsureSpace ensure_space(this); | 1151 EnsureSpace ensure_space(this); |
1147 emit_arith(5, dst, x); | 1152 emit_arith(5, dst, x); |
1148 } | 1153 } |
1149 | 1154 |
1150 | 1155 |
1151 void Assembler::sub(Register dst, const Operand& src) { | 1156 void Assembler::sub(Register dst, const Operand& src) { |
1152 EnsureSpace ensure_space(this); | 1157 EnsureSpace ensure_space(this); |
1153 EMIT(0x2B); | 1158 EMIT(0x2B); |
(...skipping 1808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2962 fflush(coverage_log); | 2967 fflush(coverage_log); |
2963 } | 2968 } |
2964 } | 2969 } |
2965 | 2970 |
2966 #endif | 2971 #endif |
2967 | 2972 |
2968 } // namespace internal | 2973 } // namespace internal |
2969 } // namespace v8 | 2974 } // namespace v8 |
2970 | 2975 |
2971 #endif // V8_TARGET_ARCH_IA32 | 2976 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |