decoder.isa (11729:f37b5fcd66fe) decoder.isa (11965:41e942451f59)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2015 RISC-V Foundation
4// Copyright (c) 2016 The University of Virginia
5// All rights reserved.
6//
7// Redistribution and use in source and binary forms, with or without
8// modification, are permitted provided that the following conditions are

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

165 }});
166 }
167 }
168
169 0x2f: decode FUNCT3 {
170 0x2: decode AMOFUNCT {
171 0x2: LoadReserved::lr_w({{
172 Rd_sd = Mem_sw;
1// -*- mode:c++ -*-
2
3// Copyright (c) 2015 RISC-V Foundation
4// Copyright (c) 2016 The University of Virginia
5// All rights reserved.
6//
7// Redistribution and use in source and binary forms, with or without
8// modification, are permitted provided that the following conditions are

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

165 }});
166 }
167 }
168
169 0x2f: decode FUNCT3 {
170 0x2: decode AMOFUNCT {
171 0x2: LoadReserved::lr_w({{
172 Rd_sd = Mem_sw;
173 }}, mem_flags=LLSC, aq=AQ, rl=RL);
173 }}, mem_flags=LLSC);
174 0x3: StoreCond::sc_w({{
175 Mem_uw = Rs2_uw;
176 }}, {{
177 Rd = result;
174 0x3: StoreCond::sc_w({{
175 Mem_uw = Rs2_uw;
176 }}, {{
177 Rd = result;
178 }}, inst_flags=IsStoreConditional, mem_flags=LLSC, aq=AQ, rl=RL);
178 }}, inst_flags=IsStoreConditional, mem_flags=LLSC);
179 format AtomicMemOp {
180 0x0: amoadd_w({{Rt_sd = Mem_sw;}}, {{
181 Mem_sw = Rs2_sw + Rt_sd;
182 Rd_sd = Rt_sd;
183 }}, {{EA = Rs1;}});
184 0x1: amoswap_w({{Rt_sd = Mem_sw;}}, {{
185 Mem_sw = Rs2_uw;
186 Rd_sd = Rt_sd;

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

213 Mem_sw = std::max<uint32_t>(Rs2_uw, Rt_sd);
214 Rd_sd = Rt_sd;
215 }}, {{EA = Rs1;}});
216 }
217 }
218 0x3: decode AMOFUNCT {
219 0x2: LoadReserved::lr_d({{
220 Rd_sd = Mem_sd;
179 format AtomicMemOp {
180 0x0: amoadd_w({{Rt_sd = Mem_sw;}}, {{
181 Mem_sw = Rs2_sw + Rt_sd;
182 Rd_sd = Rt_sd;
183 }}, {{EA = Rs1;}});
184 0x1: amoswap_w({{Rt_sd = Mem_sw;}}, {{
185 Mem_sw = Rs2_uw;
186 Rd_sd = Rt_sd;

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

213 Mem_sw = std::max<uint32_t>(Rs2_uw, Rt_sd);
214 Rd_sd = Rt_sd;
215 }}, {{EA = Rs1;}});
216 }
217 }
218 0x3: decode AMOFUNCT {
219 0x2: LoadReserved::lr_d({{
220 Rd_sd = Mem_sd;
221 }}, mem_flags=LLSC, aq=AQ, rl=RL);
221 }}, mem_flags=LLSC);
222 0x3: StoreCond::sc_d({{
223 Mem = Rs2;
224 }}, {{
225 Rd = result;
222 0x3: StoreCond::sc_d({{
223 Mem = Rs2;
224 }}, {{
225 Rd = result;
226 }}, mem_flags=LLSC, inst_flags=IsStoreConditional, aq=AQ, rl=RL);
226 }}, mem_flags=LLSC, inst_flags=IsStoreConditional);
227 format AtomicMemOp {
228 0x0: amoadd_d({{Rt_sd = Mem_sd;}}, {{
229 Mem_sd = Rs2_sd + Rt_sd;
230 Rd_sd = Rt_sd;
231 }}, {{EA = Rs1;}});
232 0x1: amoswap_d({{Rt = Mem;}}, {{
233 Mem = Rs2;
234 Rd = Rt;

--- 1149 unchanged lines hidden ---
227 format AtomicMemOp {
228 0x0: amoadd_d({{Rt_sd = Mem_sd;}}, {{
229 Mem_sd = Rs2_sd + Rt_sd;
230 Rd_sd = Rt_sd;
231 }}, {{EA = Rs1;}});
232 0x1: amoswap_d({{Rt = Mem;}}, {{
233 Mem = Rs2;
234 Rd = Rt;

--- 1149 unchanged lines hidden ---