Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: src/s390/simulator-s390.cc

Issue 1850163004: S390: Implemented SLBR in s390 simulator. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdarg.h> 5 #include <stdarg.h>
6 #include <stdlib.h> 6 #include <stdlib.h>
7 #include <cmath> 7 #include <cmath>
8 8
9 #if V8_TARGET_ARCH_S390 9 #if V8_TARGET_ARCH_S390
10 10
(...skipping 3021 matching lines...) Expand 10 before | Expand all | Expand 10 after
3032 if (TestConditionCode((Condition)2) || TestConditionCode((Condition)3)) { 3032 if (TestConditionCode((Condition)2) || TestConditionCode((Condition)3)) {
3033 alu_out = alu_out + 1; 3033 alu_out = alu_out + 1;
3034 isOF = isOF_original || CheckOverflowForUIntAdd(alu_out, 1); 3034 isOF = isOF_original || CheckOverflowForUIntAdd(alu_out, 1);
3035 } else { 3035 } else {
3036 isOF = isOF_original; 3036 isOF = isOF_original;
3037 } 3037 }
3038 set_low_register(r1, alu_out); 3038 set_low_register(r1, alu_out);
3039 SetS390ConditionCodeCarry<uint32_t>(alu_out, isOF); 3039 SetS390ConditionCodeCarry<uint32_t>(alu_out, isOF);
3040 break; 3040 break;
3041 } 3041 }
3042 case SLBR: {
3043 RREInstruction* rrinst = reinterpret_cast<RREInstruction*>(instr);
3044 int r1 = rrinst->R1Value();
3045 int r2 = rrinst->R2Value();
3046 uint32_t r1_val = get_low_register<uint32_t>(r1);
3047 uint32_t r2_val = get_low_register<uint32_t>(r2);
3048 uint32_t alu_out = 0;
3049 bool isOF = false;
3050
3051 alu_out = r1_val - r2_val;
3052 bool isOF_original = CheckOverflowForUIntSub(r1_val, r2_val);
3053 if (TestConditionCode((Condition)2) || TestConditionCode((Condition)3)) {
3054 alu_out = alu_out - 1;
3055 isOF = isOF_original || CheckOverflowForUIntSub(alu_out, 1);
3056 } else {
3057 isOF = isOF_original;
3058 }
3059 set_low_register(r1, alu_out);
3060 SetS390ConditionCodeCarry<uint32_t>(alu_out, isOF);
3061 break;
3062 }
3042 default: { return DecodeFourByteFloatingPoint(instr); } 3063 default: { return DecodeFourByteFloatingPoint(instr); }
3043 } 3064 }
3044 return true; 3065 return true;
3045 } 3066 }
3046 3067
3047 void Simulator::DecodeFourByteFloatingPointIntConversion(Instruction* instr) { 3068 void Simulator::DecodeFourByteFloatingPointIntConversion(Instruction* instr) {
3048 Opcode op = instr->S390OpcodeValue(); 3069 Opcode op = instr->S390OpcodeValue();
3049 switch (op) { 3070 switch (op) {
3050 case CDLFBR: 3071 case CDLFBR:
3051 case CDLGBR: 3072 case CDLGBR:
(...skipping 2046 matching lines...) Expand 10 before | Expand all | Expand 10 after
5098 uintptr_t address = *stack_slot; 5119 uintptr_t address = *stack_slot;
5099 set_register(sp, current_sp + sizeof(uintptr_t)); 5120 set_register(sp, current_sp + sizeof(uintptr_t));
5100 return address; 5121 return address;
5101 } 5122 }
5102 5123
5103 } // namespace internal 5124 } // namespace internal
5104 } // namespace v8 5125 } // namespace v8
5105 5126
5106 #endif // USE_SIMULATOR 5127 #endif // USE_SIMULATOR
5107 #endif // V8_TARGET_ARCH_S390 5128 #endif // V8_TARGET_ARCH_S390
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698