mem.cc (11308:7d8836fd043d) mem.cc (11692:e772fdcd3809)
1/*
2 * Copyright (c) 2012-2015 Advanced Micro Devices, Inc.
3 * All rights reserved.
4 *
5 * For use for simulation and test purposes only
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:

--- 22 unchanged lines hidden (view full) ---

31 * POSSIBILITY OF SUCH DAMAGE.
32 *
33 * Author: Steve Reinhardt
34 */
35
36#include "arch/hsail/insts/mem.hh"
37
38#include "arch/hsail/Brig.h"
1/*
2 * Copyright (c) 2012-2015 Advanced Micro Devices, Inc.
3 * All rights reserved.
4 *
5 * For use for simulation and test purposes only
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:

--- 22 unchanged lines hidden (view full) ---

31 * POSSIBILITY OF SUCH DAMAGE.
32 *
33 * Author: Steve Reinhardt
34 */
35
36#include "arch/hsail/insts/mem.hh"
37
38#include "arch/hsail/Brig.h"
39#include "enums/OpType.hh"
40
41using namespace Brig;
42
43namespace HsailISA
44{
45 const char* atomicOpToString(BrigAtomicOperation brigOp);
46
39
40using namespace Brig;
41
42namespace HsailISA
43{
44 const char* atomicOpToString(BrigAtomicOperation brigOp);
45
47 Enums::MemOpType
48 brigAtomicToMemOpType(BrigOpcode brigOpCode, BrigAtomicOperation brigOp)
49 {
50 if (brigOpCode == Brig::BRIG_OPCODE_ATOMIC) {
51 switch (brigOp) {
52 case BRIG_ATOMIC_AND:
53 return Enums::MO_AAND;
54 case BRIG_ATOMIC_OR:
55 return Enums::MO_AOR;
56 case BRIG_ATOMIC_XOR:
57 return Enums::MO_AXOR;
58 case BRIG_ATOMIC_CAS:
59 return Enums::MO_ACAS;
60 case BRIG_ATOMIC_EXCH:
61 return Enums::MO_AEXCH;
62 case BRIG_ATOMIC_ADD:
63 return Enums::MO_AADD;
64 case BRIG_ATOMIC_WRAPINC:
65 return Enums::MO_AINC;
66 case BRIG_ATOMIC_WRAPDEC:
67 return Enums::MO_ADEC;
68 case BRIG_ATOMIC_MIN:
69 return Enums::MO_AMIN;
70 case BRIG_ATOMIC_MAX:
71 return Enums::MO_AMAX;
72 case BRIG_ATOMIC_SUB:
73 return Enums::MO_ASUB;
74 default:
75 fatal("Bad BrigAtomicOperation code %d\n", brigOp);
76 }
77 } else if (brigOpCode == Brig::BRIG_OPCODE_ATOMICNORET) {
78 switch (brigOp) {
79 case BRIG_ATOMIC_AND:
80 return Enums::MO_ANRAND;
81 case BRIG_ATOMIC_OR:
82 return Enums::MO_ANROR;
83 case BRIG_ATOMIC_XOR:
84 return Enums::MO_ANRXOR;
85 case BRIG_ATOMIC_CAS:
86 return Enums::MO_ANRCAS;
87 case BRIG_ATOMIC_EXCH:
88 return Enums::MO_ANREXCH;
89 case BRIG_ATOMIC_ADD:
90 return Enums::MO_ANRADD;
91 case BRIG_ATOMIC_WRAPINC:
92 return Enums::MO_ANRINC;
93 case BRIG_ATOMIC_WRAPDEC:
94 return Enums::MO_ANRDEC;
95 case BRIG_ATOMIC_MIN:
96 return Enums::MO_ANRMIN;
97 case BRIG_ATOMIC_MAX:
98 return Enums::MO_ANRMAX;
99 case BRIG_ATOMIC_SUB:
100 return Enums::MO_ANRSUB;
101 default:
102 fatal("Bad BrigAtomicOperation code %d\n", brigOp);
103 }
104 } else {
105 fatal("Bad BrigAtomicOpcode %d\n", brigOpCode);
106 }
107 }
108
109 const char*
110 atomicOpToString(BrigAtomicOperation brigOp)
111 {
112 switch (brigOp) {
113 case BRIG_ATOMIC_AND:
114 return "and";
115 case BRIG_ATOMIC_OR:
116 return "or";

--- 23 unchanged lines hidden ---
46 const char*
47 atomicOpToString(BrigAtomicOperation brigOp)
48 {
49 switch (brigOp) {
50 case BRIG_ATOMIC_AND:
51 return "and";
52 case BRIG_ATOMIC_OR:
53 return "or";

--- 23 unchanged lines hidden ---