111730Sar4jc@virginia.edu/* 211730Sar4jc@virginia.edu * Copyright (c) 2016 The University of Virginia 311730Sar4jc@virginia.edu * All rights reserved. 411730Sar4jc@virginia.edu * 511730Sar4jc@virginia.edu * Redistribution and use in source and binary forms, with or without 611730Sar4jc@virginia.edu * modification, are permitted provided that the following conditions are 711730Sar4jc@virginia.edu * met: redistributions of source code must retain the above copyright 811730Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer; 911730Sar4jc@virginia.edu * redistributions in binary form must reproduce the above copyright 1011730Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer in the 1111730Sar4jc@virginia.edu * documentation and/or other materials provided with the distribution; 1211730Sar4jc@virginia.edu * neither the name of the copyright holders nor the names of its 1311730Sar4jc@virginia.edu * contributors may be used to endorse or promote products derived from 1411730Sar4jc@virginia.edu * this software without specific prior written permission. 1511730Sar4jc@virginia.edu * 1611730Sar4jc@virginia.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1711730Sar4jc@virginia.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1811730Sar4jc@virginia.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1911730Sar4jc@virginia.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2011730Sar4jc@virginia.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2111730Sar4jc@virginia.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2211730Sar4jc@virginia.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2311730Sar4jc@virginia.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2411730Sar4jc@virginia.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2511730Sar4jc@virginia.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2611730Sar4jc@virginia.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2711730Sar4jc@virginia.edu * 2811730Sar4jc@virginia.edu * Authors: Alec Roelke 2911730Sar4jc@virginia.edu */ 3011730Sar4jc@virginia.edu 3111730Sar4jc@virginia.edu#pragma once 3211730Sar4jc@virginia.edu 3311730Sar4jc@virginia.edu#include <cstdint> 3411730Sar4jc@virginia.edu 3511730Sar4jc@virginia.edu#include "insttest.h" 3611730Sar4jc@virginia.edu 3711730Sar4jc@virginia.edunamespace M 3811730Sar4jc@virginia.edu{ 3911730Sar4jc@virginia.edu 4011730Sar4jc@virginia.eduinline int64_t 4111730Sar4jc@virginia.edumul(int64_t rs1, int64_t rs2) 4211730Sar4jc@virginia.edu{ 4311730Sar4jc@virginia.edu int64_t rd = 0; 4411730Sar4jc@virginia.edu ROP("mul", rd, rs1, rs2); 4511730Sar4jc@virginia.edu return rd; 4611730Sar4jc@virginia.edu} 4711730Sar4jc@virginia.edu 4811730Sar4jc@virginia.eduinline int64_t 4911730Sar4jc@virginia.edumulh(int64_t rs1, int64_t rs2) 5011730Sar4jc@virginia.edu{ 5111730Sar4jc@virginia.edu int64_t rd = 0; 5211730Sar4jc@virginia.edu ROP("mulh", rd, rs1, rs2); 5311730Sar4jc@virginia.edu return rd; 5411730Sar4jc@virginia.edu} 5511730Sar4jc@virginia.edu 5611730Sar4jc@virginia.eduinline int64_t 5711730Sar4jc@virginia.edumulhsu(int64_t rs1, uint64_t rs2) 5811730Sar4jc@virginia.edu{ 5911730Sar4jc@virginia.edu int64_t rd = 0; 6011730Sar4jc@virginia.edu ROP("mulhsu", rd, rs1, rs2); 6111730Sar4jc@virginia.edu return rd; 6211730Sar4jc@virginia.edu} 6311730Sar4jc@virginia.edu 6411730Sar4jc@virginia.eduinline uint64_t 6511730Sar4jc@virginia.edumulhu(uint64_t rs1, uint64_t rs2) 6611730Sar4jc@virginia.edu{ 6711730Sar4jc@virginia.edu uint64_t rd = 0; 6811730Sar4jc@virginia.edu ROP("mulhu", rd, rs1, rs2); 6911730Sar4jc@virginia.edu return rd; 7011730Sar4jc@virginia.edu} 7111730Sar4jc@virginia.edu 7211730Sar4jc@virginia.eduinline int64_t 7311730Sar4jc@virginia.edudiv(int64_t rs1, int64_t rs2) 7411730Sar4jc@virginia.edu{ 7511730Sar4jc@virginia.edu int64_t rd = 0; 7611730Sar4jc@virginia.edu ROP("div", rd, rs1, rs2); 7711730Sar4jc@virginia.edu return rd; 7811730Sar4jc@virginia.edu} 7911730Sar4jc@virginia.edu 8011730Sar4jc@virginia.eduinline uint64_t 8111730Sar4jc@virginia.edudivu(uint64_t rs1, uint64_t rs2) 8211730Sar4jc@virginia.edu{ 8311730Sar4jc@virginia.edu uint64_t rd = 0; 8411730Sar4jc@virginia.edu ROP("divu", rd, rs1, rs2); 8511730Sar4jc@virginia.edu return rd; 8611730Sar4jc@virginia.edu} 8711730Sar4jc@virginia.edu 8811730Sar4jc@virginia.eduinline int64_t 8911730Sar4jc@virginia.edurem(int64_t rs1, int64_t rs2) 9011730Sar4jc@virginia.edu{ 9111730Sar4jc@virginia.edu int64_t rd = 0; 9211730Sar4jc@virginia.edu ROP("rem", rd, rs1, rs2); 9311730Sar4jc@virginia.edu return rd; 9411730Sar4jc@virginia.edu} 9511730Sar4jc@virginia.edu 9611730Sar4jc@virginia.eduinline uint64_t 9711730Sar4jc@virginia.eduremu(uint64_t rs1, uint64_t rs2) 9811730Sar4jc@virginia.edu{ 9911730Sar4jc@virginia.edu uint64_t rd = 0; 10011730Sar4jc@virginia.edu ROP("remu", rd, rs1, rs2); 10111730Sar4jc@virginia.edu return rd; 10211730Sar4jc@virginia.edu} 10311730Sar4jc@virginia.edu 10411730Sar4jc@virginia.eduinline int64_t 10511730Sar4jc@virginia.edumulw(int64_t rs1, int64_t rs2) 10611730Sar4jc@virginia.edu{ 10711730Sar4jc@virginia.edu int64_t rd = 0; 10811730Sar4jc@virginia.edu ROP("mulw", rd, rs1, rs2); 10911730Sar4jc@virginia.edu return rd; 11011730Sar4jc@virginia.edu} 11111730Sar4jc@virginia.edu 11211730Sar4jc@virginia.eduinline int64_t 11311730Sar4jc@virginia.edudivw(int64_t rs1, int64_t rs2) 11411730Sar4jc@virginia.edu{ 11511730Sar4jc@virginia.edu int64_t rd = 0; 11611730Sar4jc@virginia.edu ROP("divw", rd, rs1, rs2); 11711730Sar4jc@virginia.edu return rd; 11811730Sar4jc@virginia.edu} 11911730Sar4jc@virginia.edu 12011730Sar4jc@virginia.eduinline uint64_t 12111730Sar4jc@virginia.edudivuw(uint64_t rs1, uint64_t rs2) 12211730Sar4jc@virginia.edu{ 12311730Sar4jc@virginia.edu uint64_t rd = 0; 12411730Sar4jc@virginia.edu ROP("divuw", rd, rs1, rs2); 12511730Sar4jc@virginia.edu return rd; 12611730Sar4jc@virginia.edu} 12711730Sar4jc@virginia.edu 12811730Sar4jc@virginia.eduinline int64_t 12911730Sar4jc@virginia.eduremw(int64_t rs1, int64_t rs2) 13011730Sar4jc@virginia.edu{ 13111730Sar4jc@virginia.edu int64_t rd = 0; 13211730Sar4jc@virginia.edu ROP("remw", rd, rs1, rs2); 13311730Sar4jc@virginia.edu return rd; 13411730Sar4jc@virginia.edu} 13511730Sar4jc@virginia.edu 13611730Sar4jc@virginia.eduinline uint64_t 13711730Sar4jc@virginia.eduremuw(uint64_t rs1, uint64_t rs2) 13811730Sar4jc@virginia.edu{ 13911730Sar4jc@virginia.edu uint64_t rd = 0; 14011730Sar4jc@virginia.edu ROP("remuw", rd, rs1, rs2); 14111730Sar4jc@virginia.edu return rd; 14211730Sar4jc@virginia.edu} 14311730Sar4jc@virginia.edu 14411730Sar4jc@virginia.edu} // namespace M 145