summaryrefslogtreecommitdiff
path: root/src/cuda-sim
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuda-sim')
-rw-r--r--src/cuda-sim/cuda-sim.cc4
-rw-r--r--src/cuda-sim/instructions.cc16
2 files changed, 18 insertions, 2 deletions
diff --git a/src/cuda-sim/cuda-sim.cc b/src/cuda-sim/cuda-sim.cc
index df8d806..d2f096f 100644
--- a/src/cuda-sim/cuda-sim.cc
+++ b/src/cuda-sim/cuda-sim.cc
@@ -1309,7 +1309,9 @@ void function_info::ptx_jit_config(std::map<unsigned long long, size_t> mallocPt
do{
fprintf(fout, "%s", buff);
fgets(buff, 1024, fin);
- assert(!feof(fin));
+ if(feof(fin)){
+ break;
+ }
} while(strstr(buff, "entry")==NULL);
fclose(fin);
diff --git a/src/cuda-sim/instructions.cc b/src/cuda-sim/instructions.cc
index 034a7b9..9e18772 100644
--- a/src/cuda-sim/instructions.cc
+++ b/src/cuda-sim/instructions.cc
@@ -3190,7 +3190,21 @@ void rem_impl( const ptx_instruction *pI, ptx_thread_info *thread )
src1_data = thread->get_operand_value(src1, dst, i_type, thread, 1);
src2_data = thread->get_operand_value(src2, dst, i_type, thread, 1);
- data.u64 = src1_data.u64 % src2_data.u64;
+ switch ( i_type ) {
+ case S32_TYPE:
+ data.s32 = src1_data.s32 % src2_data.s32;
+ break;
+ case S64_TYPE:
+ data.s64 = src1_data.s64 % src2_data.s64;
+ break;
+ case U32_TYPE:
+ data.u32 = src1_data.u32 % src2_data.u32;
+ break;
+ case U64_TYPE:
+ data.u64 = src1_data.u64 % src2_data.u64;
+ break;
+ default: assert(0); break;
+ }
thread->set_operand_value(dst,data, i_type, thread, pI);
}