decoder.isa (2965:82703e01285a) | decoder.isa (3954:d689b611d9dc) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2006 The Regents of The University of Michigan 4// All rights reserved. 5// 6// Redistribution and use in source and binary forms, with or without 7// modification, are permitted provided that the following conditions are 8// met: redistributions of source code must retain the above copyright --- 140 unchanged lines hidden (view full) --- 149 0x1: mthi({{ HI = Rs; }}); 150 0x2: mflo({{ Rd = LO; }}); 151 0x3: mtlo({{ LO = Rs; }}); 152 } 153 } 154 155 0x3: decode FUNCTION_LO { 156 format HiLoOp { | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2006 The Regents of The University of Michigan 4// All rights reserved. 5// 6// Redistribution and use in source and binary forms, with or without 7// modification, are permitted provided that the following conditions are 8// met: redistributions of source code must retain the above copyright --- 140 unchanged lines hidden (view full) --- 149 0x1: mthi({{ HI = Rs; }}); 150 0x2: mflo({{ Rd = LO; }}); 151 0x3: mtlo({{ LO = Rs; }}); 152 } 153 } 154 155 0x3: decode FUNCTION_LO { 156 format HiLoOp { |
157 0x0: mult({{ val = Rs.sd * Rt.sd; }}); 158 0x1: multu({{ val = Rs.ud * Rt.ud; }}); 159 } 160 161 format HiLoMiscOp { 162 0x2: div({{ if (Rt.sd != 0) { 163 HI = Rs.sd % Rt.sd; 164 LO = Rs.sd / Rt.sd; | 157 0x0: mult({{ int64_t val = Rs.sd * Rt.sd; }}); 158 0x1: multu({{ uint64_t val = Rs.ud * Rt.ud; }}); 159 0x2: div({{ int64_t val; 160 if (Rt.sd != 0) { 161 int64_t hi = Rs.sd % Rt.sd; 162 int64_t lo = Rs.sd / Rt.sd; 163 val = (hi << 32) | lo; |
165 } 166 }}); | 164 } 165 }}); |
167 0x3: divu({{ if (Rt.ud != 0) { 168 HI = Rs.ud % Rt.ud; 169 LO = Rs.ud / Rt.ud; | 166 0x3: divu({{ uint64_t val; 167 if (Rt.ud != 0) { 168 uint64_t hi = Rs.ud % Rt.ud; 169 uint64_t lo = Rs.ud / Rt.ud; 170 val = (hi << 32) | lo; |
170 } 171 }}); 172 } 173 } 174 175 0x4: decode HINT { 176 0x0: decode FUNCTION_LO { 177 format IntOp { --- 767 unchanged lines hidden (view full) --- 945 //Table A-5 MIPS32 SPECIAL2 Encoding of Function Field 946 0x4: decode FUNCTION_HI { 947 0x0: decode FUNCTION_LO { 948 0x2: IntOp::mul({{ int64_t temp1 = Rs.sd * Rt.sd; 949 Rd.sw = temp1<31:0> 950 }}); 951 952 format HiLoOp { | 171 } 172 }}); 173 } 174 } 175 176 0x4: decode HINT { 177 0x0: decode FUNCTION_LO { 178 format IntOp { --- 767 unchanged lines hidden (view full) --- 946 //Table A-5 MIPS32 SPECIAL2 Encoding of Function Field 947 0x4: decode FUNCTION_HI { 948 0x0: decode FUNCTION_LO { 949 0x2: IntOp::mul({{ int64_t temp1 = Rs.sd * Rt.sd; 950 Rd.sw = temp1<31:0> 951 }}); 952 953 format HiLoOp { |
953 0x0: madd({{ val = ((int64_t) HI << 32 | LO) + 954 (Rs.sd * Rt.sd); | 954 0x0: madd({{ int64_t val = ((int64_t) HI << 32 | LO) + 955 (Rs.sd * Rt.sd); |
955 }}); | 956 }}); |
956 0x1: maddu({{ val = ((uint64_t) HI << 32 | LO) + 957 (Rs.ud * Rt.ud); | 957 0x1: maddu({{ uint64_t val = ((uint64_t) HI << 32 | LO) + 958 (Rs.ud * Rt.ud); |
958 }}); | 959 }}); |
959 0x4: msub({{ val = ((int64_t) HI << 32 | LO) - 960 (Rs.sd * Rt.sd); | 960 0x4: msub({{ int64_t val = ((int64_t) HI << 32 | LO) - 961 (Rs.sd * Rt.sd); |
961 }}); | 962 }}); |
962 0x5: msubu({{ val = ((uint64_t) HI << 32 | LO) - 963 (Rs.ud * Rt.ud); | 963 0x5: msubu({{ uint64_t val = ((uint64_t) HI << 32 | LO) - 964 (Rs.ud * Rt.ud); |
964 }}); 965 } 966 } 967 968 0x4: decode FUNCTION_LO { 969 format BasicOp { 970 0x0: clz({{ int cnt = 32; 971 for (int idx = 31; idx >= 0; idx--) { --- 131 unchanged lines hidden --- | 965 }}); 966 } 967 } 968 969 0x4: decode FUNCTION_LO { 970 format BasicOp { 971 0x0: clz({{ int cnt = 32; 972 for (int idx = 31; idx >= 0; idx--) { --- 131 unchanged lines hidden --- |