summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cuda-sim/cuda-sim.cc8
-rw-r--r--src/cuda-sim/instructions.cc14
-rw-r--r--src/cuda-sim/ptx.l4
-rw-r--r--src/cuda-sim/ptx.y9
-rw-r--r--src/cuda-sim/ptx_ir.cc5
-rw-r--r--src/cuda-sim/ptx_ir.h2
6 files changed, 14 insertions, 28 deletions
diff --git a/src/cuda-sim/cuda-sim.cc b/src/cuda-sim/cuda-sim.cc
index 1ccc156..ab54121 100644
--- a/src/cuda-sim/cuda-sim.cc
+++ b/src/cuda-sim/cuda-sim.cc
@@ -556,14 +556,14 @@ void ptx_instruction::set_bar_type()
break;
case RED_OPTION:
bar_type = RED;
- switch(m_reduction_op){
- case POPC_REDUCTION:
+ switch(m_atomic_spec){
+ case ATOMIC_POPC:
red_type = POPC_RED;
break;
- case AND_REDUCTION:
+ case ATOMIC_AND:
red_type = AND_RED;
break;
- case OR_REDUCTION:
+ case ATOMIC_OR:
red_type = OR_RED;
break;
}
diff --git a/src/cuda-sim/instructions.cc b/src/cuda-sim/instructions.cc
index 5d17f95..cf7f04a 100644
--- a/src/cuda-sim/instructions.cc
+++ b/src/cuda-sim/instructions.cc
@@ -1237,7 +1237,7 @@ void bar_impl( const ptx_instruction *pIin, ptx_thread_info *thread )
{
ptx_instruction * pI = const_cast<ptx_instruction *>(pIin);
unsigned bar_op = pI->barrier_op();
- unsigned red_op = pI->reduction_op();
+ unsigned red_op = pI->get_atomic();
unsigned ctaid = thread->get_cta_uid();
switch(bar_op){
@@ -1288,13 +1288,13 @@ void bar_impl( const ptx_instruction *pIin, ptx_thread_info *thread )
pI->set_bar_id(op1_data.u32);
pI->set_bar_count(op2_data.u32);
switch(red_op){
- case POPC_REDUCTION:
+ case ATOMIC_POPC:
thread->popc_reduction(ctaid,op1_data.u32,op3_data.u32);
break;
- case AND_REDUCTION:
+ case ATOMIC_AND:
thread->and_reduction(ctaid,op1_data.u32,op3_data.u32);
break;
- case OR_REDUCTION:
+ case ATOMIC_OR:
thread->or_reduction(ctaid,op1_data.u32,op3_data.u32);
break;
default:
@@ -1311,13 +1311,13 @@ void bar_impl( const ptx_instruction *pIin, ptx_thread_info *thread )
op2_data.u32=!(op2_data.pred & 0x0001);
pI->set_bar_id(op1_data.u32);
switch(red_op){
- case POPC_REDUCTION:
+ case ATOMIC_POPC:
thread->popc_reduction(ctaid,op1_data.u32,op2_data.u32);
break;
- case AND_REDUCTION:
+ case ATOMIC_AND:
thread->and_reduction(ctaid,op1_data.u32,op2_data.u32);
break;
- case OR_REDUCTION:
+ case ATOMIC_OR:
thread->or_reduction(ctaid,op1_data.u32,op2_data.u32);
break;
default:
diff --git a/src/cuda-sim/ptx.l b/src/cuda-sim/ptx.l
index ebe07c7..dfed936 100644
--- a/src/cuda-sim/ptx.l
+++ b/src/cuda-sim/ptx.l
@@ -298,9 +298,6 @@ breakaddr TC; ptx_lval.int_value = BREAKADDR_OP; return OPCODE;
\.arrive TC; return ARRIVE_OPTION;
\.red TC; return RED_OPTION;
-\.popc TC; return POPC_REDUCTION;
-\.and TC; return AND_REDUCTION;
-\.or TC; return OR_REDUCTION;
\.approx TC; return APPROX_OPTION;
\.full TC; return FULL_OPTION;
@@ -327,6 +324,7 @@ breakaddr TC; ptx_lval.int_value = BREAKADDR_OP; return OPCODE;
\.wb TC; return WB_OPTION;
\.wt TC; return WT_OPTION;
+\.popc TC; return ATOMIC_POPC;
\.and TC; return ATOMIC_AND;
\.or TC; return ATOMIC_OR;
\.xor TC; return ATOMIC_XOR;
diff --git a/src/cuda-sim/ptx.y b/src/cuda-sim/ptx.y
index 6c614bf..e5942f0 100644
--- a/src/cuda-sim/ptx.y
+++ b/src/cuda-sim/ptx.y
@@ -157,10 +157,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%token NEG_OPTION
%token SYNC_OPTION
%token RED_OPTION
-%token POPC_REDUCTION
-%token AND_REDUCTION
-%token OR_REDUCTION
%token ARRIVE_OPTION
+%token ATOMIC_POPC
%token ATOMIC_AND
%token ATOMIC_OR
%token ATOMIC_XOR
@@ -416,10 +414,7 @@ option: type_spec
| rounding_mode
| SYNC_OPTION { add_option(SYNC_OPTION); }
| ARRIVE_OPTION { add_option(ARRIVE_OPTION); }
- | RED_OPTION { add_option(RED_OPTION); }
- | POPC_REDUCTION { add_option(POPC_REDUCTION); }
- | AND_REDUCTION { add_option(AND_REDUCTION); }
- | OR_REDUCTION { add_option(OR_REDUCTION); }
+ | RED_OPTION { add_option(RED_OPTION); }
| UNI_OPTION { add_option(UNI_OPTION); }
| WIDE_OPTION { add_option(WIDE_OPTION); }
| ANY_OPTION { add_option(ANY_OPTION); }
diff --git a/src/cuda-sim/ptx_ir.cc b/src/cuda-sim/ptx_ir.cc
index b6c1b9a..490cb10 100644
--- a/src/cuda-sim/ptx_ir.cc
+++ b/src/cuda-sim/ptx_ir.cc
@@ -1049,11 +1049,6 @@ ptx_instruction::ptx_instruction( int opcode,
case RED_OPTION:
m_barrier_op = last_ptx_inst_option;
break;
- case OR_REDUCTION:
- case AND_REDUCTION:
- case POPC_REDUCTION:
- m_reduction_op = last_ptx_inst_option;
- break;
case EQU_OPTION:
case NEU_OPTION:
case LTU_OPTION:
diff --git a/src/cuda-sim/ptx_ir.h b/src/cuda-sim/ptx_ir.h
index 1dd851a..b51406e 100644
--- a/src/cuda-sim/ptx_ir.h
+++ b/src/cuda-sim/ptx_ir.h
@@ -993,7 +993,6 @@ public:
unsigned saturation_mode() const { return m_saturation_mode;}
unsigned dimension() const { return m_geom_spec;}
unsigned barrier_op() const {return m_barrier_op;}
- unsigned reduction_op() const {return m_reduction_op;}
enum vote_mode_t { vote_any, vote_all, vote_uni, vote_ballot };
enum vote_mode_t vote_mode() const { return m_vote_mode; }
@@ -1059,7 +1058,6 @@ private:
unsigned m_compare_op;
unsigned m_saturation_mode;
unsigned m_barrier_op;
- unsigned m_reduction_op;
std::list<int> m_scalar_type;
memory_space_t m_space_spec;