decoder.isa (3949:b6664282d899) decoder.isa (3952:092d03b2ab95)
1// Copyright (c) 2006 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

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

1004 }
1005 }
1006 }
1007 0x3: decode OP3 {
1008 format Load {
1009 0x00: lduw({{Rd = Mem.uw;}});
1010 0x01: ldub({{Rd = Mem.ub;}});
1011 0x02: lduh({{Rd = Mem.uhw;}});
1// Copyright (c) 2006 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

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

1004 }
1005 }
1006 }
1007 0x3: decode OP3 {
1008 format Load {
1009 0x00: lduw({{Rd = Mem.uw;}});
1010 0x01: ldub({{Rd = Mem.ub;}});
1011 0x02: lduh({{Rd = Mem.uhw;}});
1012 0x03: ldd({{
1012 0x03: ldtw({{
1013 uint64_t val = Mem.udw;
1014 RdLow = val<31:0>;
1015 RdHigh = val<63:32>;
1016 }});
1017 }
1018 format Store {
1019 0x04: stw({{Mem.uw = Rd.sw;}});
1020 0x05: stb({{Mem.ub = Rd.sb;}});
1021 0x06: sth({{Mem.uhw = Rd.shw;}});
1013 uint64_t val = Mem.udw;
1014 RdLow = val<31:0>;
1015 RdHigh = val<63:32>;
1016 }});
1017 }
1018 format Store {
1019 0x04: stw({{Mem.uw = Rd.sw;}});
1020 0x05: stb({{Mem.ub = Rd.sb;}});
1021 0x06: sth({{Mem.uhw = Rd.shw;}});
1022 0x07: std({{Mem.udw = RdLow<31:0> | (RdHigh<31:0> << 32);}});
1022 0x07: sttw({{Mem.udw = RdLow<31:0> | (RdHigh<31:0> << 32);}});
1023 }
1024 format Load {
1025 0x08: ldsw({{Rd = (int32_t)Mem.sw;}});
1026 0x09: ldsb({{Rd = (int8_t)Mem.sb;}});
1027 0x0A: ldsh({{Rd = (int16_t)Mem.shw;}});
1028 0x0B: ldx({{Rd = (int64_t)Mem.sdw;}});
1029 }
1030 0x0D: LoadStore::ldstub(
1031 {{Rd = Mem.ub;}},
1032 {{Mem.ub = 0xFF;}});
1033 0x0E: Store::stx({{Mem.udw = Rd}});
1034 0x0F: LoadStore::swap(
1035 {{uReg0 = Rd.uw;
1036 Rd.uw = Mem.uw;}},
1037 {{Mem.uw = uReg0;}});
1038 format LoadAlt {
1039 0x10: lduwa({{Rd = Mem.uw;}}, {{EXT_ASI}});
1040 0x11: lduba({{Rd = Mem.ub;}}, {{EXT_ASI}});
1041 0x12: lduha({{Rd = Mem.uhw;}}, {{EXT_ASI}});
1023 }
1024 format Load {
1025 0x08: ldsw({{Rd = (int32_t)Mem.sw;}});
1026 0x09: ldsb({{Rd = (int8_t)Mem.sb;}});
1027 0x0A: ldsh({{Rd = (int16_t)Mem.shw;}});
1028 0x0B: ldx({{Rd = (int64_t)Mem.sdw;}});
1029 }
1030 0x0D: LoadStore::ldstub(
1031 {{Rd = Mem.ub;}},
1032 {{Mem.ub = 0xFF;}});
1033 0x0E: Store::stx({{Mem.udw = Rd}});
1034 0x0F: LoadStore::swap(
1035 {{uReg0 = Rd.uw;
1036 Rd.uw = Mem.uw;}},
1037 {{Mem.uw = uReg0;}});
1038 format LoadAlt {
1039 0x10: lduwa({{Rd = Mem.uw;}}, {{EXT_ASI}});
1040 0x11: lduba({{Rd = Mem.ub;}}, {{EXT_ASI}});
1041 0x12: lduha({{Rd = Mem.uhw;}}, {{EXT_ASI}});
1042 0x13: ldda({{
1042 0x13: ldtwa({{
1043 uint64_t val = Mem.udw;
1044 RdLow = val<31:0>;
1045 RdHigh = val<63:32>;
1046 }}, {{EXT_ASI}});
1047 }
1048 format StoreAlt {
1049 0x14: stwa({{Mem.uw = Rd;}}, {{EXT_ASI}});
1050 0x15: stba({{Mem.ub = Rd;}}, {{EXT_ASI}});
1051 0x16: stha({{Mem.uhw = Rd;}}, {{EXT_ASI}});
1043 uint64_t val = Mem.udw;
1044 RdLow = val<31:0>;
1045 RdHigh = val<63:32>;
1046 }}, {{EXT_ASI}});
1047 }
1048 format StoreAlt {
1049 0x14: stwa({{Mem.uw = Rd;}}, {{EXT_ASI}});
1050 0x15: stba({{Mem.ub = Rd;}}, {{EXT_ASI}});
1051 0x16: stha({{Mem.uhw = Rd;}}, {{EXT_ASI}});
1052 0x17: stda({{Mem.udw = RdLow<31:0> | RdHigh<31:0> << 32;}}, {{EXT_ASI}});
1052 0x17: sttwa({{Mem.udw = RdLow<31:0> | RdHigh<31:0> << 32;}}, {{EXT_ASI}});
1053 }
1054 format LoadAlt {
1055 0x18: ldswa({{Rd = (int32_t)Mem.sw;}}, {{EXT_ASI}});
1056 0x19: ldsba({{Rd = (int8_t)Mem.sb;}}, {{EXT_ASI}});
1057 0x1A: ldsha({{Rd = (int16_t)Mem.shw;}}, {{EXT_ASI}});
1058 0x1B: ldxa({{Rd = (int64_t)Mem.sdw;}}, {{EXT_ASI}});
1059 }
1060 0x1D: LoadStoreAlt::ldstuba(

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

1100 //ASI_REAL
1101 0x14: FailUnimpl::lddfa_real();
1102 //ASI_REAL_LITTLE
1103 0x1C: FailUnimpl::lddfa_real_l();
1104 //ASI_REAL_IO
1105 0x15: FailUnimpl::lddfa_real_io();
1106 //ASI_REAL_IO_LITTLE
1107 0x1D: FailUnimpl::lddfa_real_io_l();
1053 }
1054 format LoadAlt {
1055 0x18: ldswa({{Rd = (int32_t)Mem.sw;}}, {{EXT_ASI}});
1056 0x19: ldsba({{Rd = (int8_t)Mem.sb;}}, {{EXT_ASI}});
1057 0x1A: ldsha({{Rd = (int16_t)Mem.shw;}}, {{EXT_ASI}});
1058 0x1B: ldxa({{Rd = (int64_t)Mem.sdw;}}, {{EXT_ASI}});
1059 }
1060 0x1D: LoadStoreAlt::ldstuba(

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

1100 //ASI_REAL
1101 0x14: FailUnimpl::lddfa_real();
1102 //ASI_REAL_LITTLE
1103 0x1C: FailUnimpl::lddfa_real_l();
1104 //ASI_REAL_IO
1105 0x15: FailUnimpl::lddfa_real_io();
1106 //ASI_REAL_IO_LITTLE
1107 0x1D: FailUnimpl::lddfa_real_io_l();
1108 //ASI_LDTX_REAL
1109 0x26: TwinLoad::ldtx_real(
1110 {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
1111 //ASI_LDTX_N
1112 0x27: TwinLoad::ldtx_n(
1113 {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
1114 //ASI_LDTX_REAL_L
1115 0x2E: TwinLoad::ldtx_real_l(
1116 {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
1117 //ASI_LDTX_N_L
1118 0x2F: TwinLoad::ldtx_n_l(
1119 {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
1108 //ASI_PRIMARY
1109 0x80: FailUnimpl::lddfa_p();
1110 //ASI_PRIMARY_LITTLE
1111 0x88: FailUnimpl::lddfa_pl();
1112 //ASI_SECONDARY
1113 0x81: FailUnimpl::lddfa_s();
1114 //ASI_SECONDARY_LITTLE
1115 0x89: FailUnimpl::lddfa_sl();

--- 152 unchanged lines hidden ---
1120 //ASI_PRIMARY
1121 0x80: FailUnimpl::lddfa_p();
1122 //ASI_PRIMARY_LITTLE
1123 0x88: FailUnimpl::lddfa_pl();
1124 //ASI_SECONDARY
1125 0x81: FailUnimpl::lddfa_s();
1126 //ASI_SECONDARY_LITTLE
1127 0x89: FailUnimpl::lddfa_sl();

--- 152 unchanged lines hidden ---