mem.cc revision 11308
111308Santhony.gutierrez@amd.com/* 211308Santhony.gutierrez@amd.com * Copyright (c) 2012-2015 Advanced Micro Devices, Inc. 311308Santhony.gutierrez@amd.com * All rights reserved. 411308Santhony.gutierrez@amd.com * 511308Santhony.gutierrez@amd.com * For use for simulation and test purposes only 611308Santhony.gutierrez@amd.com * 711308Santhony.gutierrez@amd.com * Redistribution and use in source and binary forms, with or without 811308Santhony.gutierrez@amd.com * modification, are permitted provided that the following conditions are met: 911308Santhony.gutierrez@amd.com * 1011308Santhony.gutierrez@amd.com * 1. Redistributions of source code must retain the above copyright notice, 1111308Santhony.gutierrez@amd.com * this list of conditions and the following disclaimer. 1211308Santhony.gutierrez@amd.com * 1311308Santhony.gutierrez@amd.com * 2. Redistributions in binary form must reproduce the above copyright notice, 1411308Santhony.gutierrez@amd.com * this list of conditions and the following disclaimer in the documentation 1511308Santhony.gutierrez@amd.com * and/or other materials provided with the distribution. 1611308Santhony.gutierrez@amd.com * 1711308Santhony.gutierrez@amd.com * 3. Neither the name of the copyright holder nor the names of its contributors 1811308Santhony.gutierrez@amd.com * may be used to endorse or promote products derived from this software 1911308Santhony.gutierrez@amd.com * without specific prior written permission. 2011308Santhony.gutierrez@amd.com * 2111308Santhony.gutierrez@amd.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 2211308Santhony.gutierrez@amd.com * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2311308Santhony.gutierrez@amd.com * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2411308Santhony.gutierrez@amd.com * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 2511308Santhony.gutierrez@amd.com * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2611308Santhony.gutierrez@amd.com * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2711308Santhony.gutierrez@amd.com * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2811308Santhony.gutierrez@amd.com * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2911308Santhony.gutierrez@amd.com * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 3011308Santhony.gutierrez@amd.com * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 3111308Santhony.gutierrez@amd.com * POSSIBILITY OF SUCH DAMAGE. 3211308Santhony.gutierrez@amd.com * 3311308Santhony.gutierrez@amd.com * Author: Steve Reinhardt 3411308Santhony.gutierrez@amd.com */ 3511308Santhony.gutierrez@amd.com 3611308Santhony.gutierrez@amd.com#include "arch/hsail/insts/mem.hh" 3711308Santhony.gutierrez@amd.com 3811308Santhony.gutierrez@amd.com#include "arch/hsail/Brig.h" 3911308Santhony.gutierrez@amd.com#include "enums/OpType.hh" 4011308Santhony.gutierrez@amd.com 4111308Santhony.gutierrez@amd.comusing namespace Brig; 4211308Santhony.gutierrez@amd.com 4311308Santhony.gutierrez@amd.comnamespace HsailISA 4411308Santhony.gutierrez@amd.com{ 4511308Santhony.gutierrez@amd.com const char* atomicOpToString(BrigAtomicOperation brigOp); 4611308Santhony.gutierrez@amd.com 4711308Santhony.gutierrez@amd.com Enums::MemOpType 4811308Santhony.gutierrez@amd.com brigAtomicToMemOpType(BrigOpcode brigOpCode, BrigAtomicOperation brigOp) 4911308Santhony.gutierrez@amd.com { 5011308Santhony.gutierrez@amd.com if (brigOpCode == Brig::BRIG_OPCODE_ATOMIC) { 5111308Santhony.gutierrez@amd.com switch (brigOp) { 5211308Santhony.gutierrez@amd.com case BRIG_ATOMIC_AND: 5311308Santhony.gutierrez@amd.com return Enums::MO_AAND; 5411308Santhony.gutierrez@amd.com case BRIG_ATOMIC_OR: 5511308Santhony.gutierrez@amd.com return Enums::MO_AOR; 5611308Santhony.gutierrez@amd.com case BRIG_ATOMIC_XOR: 5711308Santhony.gutierrez@amd.com return Enums::MO_AXOR; 5811308Santhony.gutierrez@amd.com case BRIG_ATOMIC_CAS: 5911308Santhony.gutierrez@amd.com return Enums::MO_ACAS; 6011308Santhony.gutierrez@amd.com case BRIG_ATOMIC_EXCH: 6111308Santhony.gutierrez@amd.com return Enums::MO_AEXCH; 6211308Santhony.gutierrez@amd.com case BRIG_ATOMIC_ADD: 6311308Santhony.gutierrez@amd.com return Enums::MO_AADD; 6411308Santhony.gutierrez@amd.com case BRIG_ATOMIC_WRAPINC: 6511308Santhony.gutierrez@amd.com return Enums::MO_AINC; 6611308Santhony.gutierrez@amd.com case BRIG_ATOMIC_WRAPDEC: 6711308Santhony.gutierrez@amd.com return Enums::MO_ADEC; 6811308Santhony.gutierrez@amd.com case BRIG_ATOMIC_MIN: 6911308Santhony.gutierrez@amd.com return Enums::MO_AMIN; 7011308Santhony.gutierrez@amd.com case BRIG_ATOMIC_MAX: 7111308Santhony.gutierrez@amd.com return Enums::MO_AMAX; 7211308Santhony.gutierrez@amd.com case BRIG_ATOMIC_SUB: 7311308Santhony.gutierrez@amd.com return Enums::MO_ASUB; 7411308Santhony.gutierrez@amd.com default: 7511308Santhony.gutierrez@amd.com fatal("Bad BrigAtomicOperation code %d\n", brigOp); 7611308Santhony.gutierrez@amd.com } 7711308Santhony.gutierrez@amd.com } else if (brigOpCode == Brig::BRIG_OPCODE_ATOMICNORET) { 7811308Santhony.gutierrez@amd.com switch (brigOp) { 7911308Santhony.gutierrez@amd.com case BRIG_ATOMIC_AND: 8011308Santhony.gutierrez@amd.com return Enums::MO_ANRAND; 8111308Santhony.gutierrez@amd.com case BRIG_ATOMIC_OR: 8211308Santhony.gutierrez@amd.com return Enums::MO_ANROR; 8311308Santhony.gutierrez@amd.com case BRIG_ATOMIC_XOR: 8411308Santhony.gutierrez@amd.com return Enums::MO_ANRXOR; 8511308Santhony.gutierrez@amd.com case BRIG_ATOMIC_CAS: 8611308Santhony.gutierrez@amd.com return Enums::MO_ANRCAS; 8711308Santhony.gutierrez@amd.com case BRIG_ATOMIC_EXCH: 8811308Santhony.gutierrez@amd.com return Enums::MO_ANREXCH; 8911308Santhony.gutierrez@amd.com case BRIG_ATOMIC_ADD: 9011308Santhony.gutierrez@amd.com return Enums::MO_ANRADD; 9111308Santhony.gutierrez@amd.com case BRIG_ATOMIC_WRAPINC: 9211308Santhony.gutierrez@amd.com return Enums::MO_ANRINC; 9311308Santhony.gutierrez@amd.com case BRIG_ATOMIC_WRAPDEC: 9411308Santhony.gutierrez@amd.com return Enums::MO_ANRDEC; 9511308Santhony.gutierrez@amd.com case BRIG_ATOMIC_MIN: 9611308Santhony.gutierrez@amd.com return Enums::MO_ANRMIN; 9711308Santhony.gutierrez@amd.com case BRIG_ATOMIC_MAX: 9811308Santhony.gutierrez@amd.com return Enums::MO_ANRMAX; 9911308Santhony.gutierrez@amd.com case BRIG_ATOMIC_SUB: 10011308Santhony.gutierrez@amd.com return Enums::MO_ANRSUB; 10111308Santhony.gutierrez@amd.com default: 10211308Santhony.gutierrez@amd.com fatal("Bad BrigAtomicOperation code %d\n", brigOp); 10311308Santhony.gutierrez@amd.com } 10411308Santhony.gutierrez@amd.com } else { 10511308Santhony.gutierrez@amd.com fatal("Bad BrigAtomicOpcode %d\n", brigOpCode); 10611308Santhony.gutierrez@amd.com } 10711308Santhony.gutierrez@amd.com } 10811308Santhony.gutierrez@amd.com 10911308Santhony.gutierrez@amd.com const char* 11011308Santhony.gutierrez@amd.com atomicOpToString(BrigAtomicOperation brigOp) 11111308Santhony.gutierrez@amd.com { 11211308Santhony.gutierrez@amd.com switch (brigOp) { 11311308Santhony.gutierrez@amd.com case BRIG_ATOMIC_AND: 11411308Santhony.gutierrez@amd.com return "and"; 11511308Santhony.gutierrez@amd.com case BRIG_ATOMIC_OR: 11611308Santhony.gutierrez@amd.com return "or"; 11711308Santhony.gutierrez@amd.com case BRIG_ATOMIC_XOR: 11811308Santhony.gutierrez@amd.com return "xor"; 11911308Santhony.gutierrez@amd.com case BRIG_ATOMIC_CAS: 12011308Santhony.gutierrez@amd.com return "cas"; 12111308Santhony.gutierrez@amd.com case BRIG_ATOMIC_EXCH: 12211308Santhony.gutierrez@amd.com return "exch"; 12311308Santhony.gutierrez@amd.com case BRIG_ATOMIC_ADD: 12411308Santhony.gutierrez@amd.com return "add"; 12511308Santhony.gutierrez@amd.com case BRIG_ATOMIC_WRAPINC: 12611308Santhony.gutierrez@amd.com return "inc"; 12711308Santhony.gutierrez@amd.com case BRIG_ATOMIC_WRAPDEC: 12811308Santhony.gutierrez@amd.com return "dec"; 12911308Santhony.gutierrez@amd.com case BRIG_ATOMIC_MIN: 13011308Santhony.gutierrez@amd.com return "min"; 13111308Santhony.gutierrez@amd.com case BRIG_ATOMIC_MAX: 13211308Santhony.gutierrez@amd.com return "max"; 13311308Santhony.gutierrez@amd.com case BRIG_ATOMIC_SUB: 13411308Santhony.gutierrez@amd.com return "sub"; 13511308Santhony.gutierrez@amd.com default: 13611308Santhony.gutierrez@amd.com return "unknown"; 13711308Santhony.gutierrez@amd.com } 13811308Santhony.gutierrez@amd.com } 13911308Santhony.gutierrez@amd.com} // namespace HsailISA 140