Deleted Added
sdiff udiff text old ( 7224:7d22b6d6093f ) new ( 7227:6f435f54b1fb )
full compact
1// Copyright (c) 2010 ARM Limited
2// All rights reserved
3//
4// The license below extends only to copyright in the software and shall
5// not be construed as granting a license to any other intellectual
6// property including but not limited to intellectual property relating
7// to a hardware implementation of the functionality of the software
8// licensed hereunder. You may use the software subject to the license

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

126
127def format ArmPackUnpackSatReverse() {{
128 decode_block = '''
129 {
130 const uint32_t op1 = bits(machInst, 22, 20);
131 const uint32_t a = bits(machInst, 19, 16);
132 const uint32_t op2 = bits(machInst, 7, 5);
133 if (bits(op2, 0) == 0) {
134 if (op1 == 0) {
135 return new WarnUnimplemented("pkh", machInst);
136 } else if (bits(op1, 2, 1) == 1) {
137 return new WarnUnimplemented("ssat", machInst);
138 } else if (bits(op1, 2, 1) == 3) {
139 return new WarnUnimplemented("usat", machInst);
140 }
141 return new Unknown(machInst);
142 }
143 switch (op1) {
144 case 0x0:
145 if (op2 == 0x3) {
146 if (a == 0xf) {
147 return new WarnUnimplemented("sxtb16", machInst);
148 } else {
149 return new WarnUnimplemented("sxtab16", machInst);
150 }
151 } else if (op2 == 0x5) {
152 return new WarnUnimplemented("sel", machInst);
153 }
154 break;
155 case 0x2:
156 if (op2 == 0x1) {
157 return new WarnUnimplemented("ssat16", machInst);
158 } else if (op2 == 0x3) {
159 if (a == 0xf) {
160 return new WarnUnimplemented("sxtb", machInst);
161 } else {
162 return new WarnUnimplemented("sxtab", machInst);
163 }
164 }
165 break;

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

186 return new WarnUnimplemented("uxtb16", machInst);
187 } else {
188 return new WarnUnimplemented("uxtab16", machInst);
189 }
190 }
191 break;
192 case 0x6:
193 if (op2 == 0x1) {
194 return new WarnUnimplemented("usat16", machInst);
195 } else if (op2 == 0x3) {
196 if (a == 0xf) {
197 return new WarnUnimplemented("uxtb", machInst);
198 } else {
199 return new WarnUnimplemented("uxtab", machInst);
200 }
201 }
202 break;

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

1103 const uint32_t imm = bits(machInst, 7, 0) |
1104 (bits(machInst, 14, 12) << 8) |
1105 (bits(machInst, 26) << 11) |
1106 (bits(machInst, 19, 16) << 12);
1107 return new MovtImm(machInst, rd, rd, imm, true);
1108 }
1109 case 0x12:
1110 if (!(bits(machInst, 14, 12) || bits(machInst, 7, 6))) {
1111 return new WarnUnimplemented("ssat16", machInst);
1112 }
1113 // Fall through on purpose...
1114 case 0x10:
1115 return new WarnUnimplemented("ssat", machInst);
1116 case 0x14:
1117 return new WarnUnimplemented("sbfx", machInst);
1118 case 0x16:
1119 if (rn == 0xf) {
1120 return new WarnUnimplemented("bfc", machInst);
1121 } else {
1122 return new WarnUnimplemented("bfi", machInst);
1123 }
1124 case 0x1a:
1125 if (!(bits(machInst, 14, 12) || bits(machInst, 7, 6))) {
1126 return new WarnUnimplemented("usat16", machInst);
1127 }
1128 // Fall through on purpose...
1129 case 0x18:
1130 return new WarnUnimplemented("usat", machInst);
1131 case 0x1c:
1132 return new WarnUnimplemented("ubfx", machInst);
1133 default:
1134 return new Unknown(machInst);
1135 }
1136 }
1137 '''
1138}};

--- 94 unchanged lines hidden ---