mult.isa (8520:f9a495adafd9) | mult.isa (12595:b5a51007feac) |
---|---|
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 --- 73 unchanged lines hidden (view full) --- 82 return new Smull(machInst, ra, rd, rn, rm); 83 } 84 case 0x7: 85 if (s) { 86 return new SmlalCc(machInst, ra, rd, rn, rm); 87 } else { 88 return new Smlal(machInst, ra, rd, rn, rm); 89 } | 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 --- 73 unchanged lines hidden (view full) --- 82 return new Smull(machInst, ra, rd, rn, rm); 83 } 84 case 0x7: 85 if (s) { 86 return new SmlalCc(machInst, ra, rd, rn, rm); 87 } else { 88 return new Smlal(machInst, ra, rd, rn, rm); 89 } |
90 default: 91 M5_UNREACHABLE; |
|
90 } 91 } 92 ''' 93}}; 94 95def format ArmHalfWordMultAndMultAcc() {{ 96 decode_block = ''' 97 { --- 9 unchanged lines hidden (view full) --- 107 case 0x0: 108 return new SmlabbCc(machInst, rd, rn, rm, ra); 109 case 0x1: 110 return new SmlatbCc(machInst, rd, rn, rm, ra); 111 case 0x2: 112 return new SmlabtCc(machInst, rd, rn, rm, ra); 113 case 0x3: 114 return new SmlattCc(machInst, rd, rn, rm, ra); | 92 } 93 } 94 ''' 95}}; 96 97def format ArmHalfWordMultAndMultAcc() {{ 98 decode_block = ''' 99 { --- 9 unchanged lines hidden (view full) --- 109 case 0x0: 110 return new SmlabbCc(machInst, rd, rn, rm, ra); 111 case 0x1: 112 return new SmlatbCc(machInst, rd, rn, rm, ra); 113 case 0x2: 114 return new SmlabtCc(machInst, rd, rn, rm, ra); 115 case 0x3: 116 return new SmlattCc(machInst, rd, rn, rm, ra); |
117 default: 118 M5_UNREACHABLE; |
|
115 } 116 case 0x1: 117 if (op) { 118 if (bits(machInst, 6)) { 119 return new Smulwt(machInst, rd, rn, rm); 120 } else { 121 return new Smulwb(machInst, rd, rn, rm); 122 } --- 9 unchanged lines hidden (view full) --- 132 case 0x0: 133 return new Smlalbb(machInst, ra, rd, rn, rm); 134 case 0x1: 135 return new Smlaltb(machInst, ra, rd, rn, rm); 136 case 0x2: 137 return new Smlalbt(machInst, ra, rd, rn, rm); 138 case 0x3: 139 return new Smlaltt(machInst, ra, rd, rn, rm); | 119 } 120 case 0x1: 121 if (op) { 122 if (bits(machInst, 6)) { 123 return new Smulwt(machInst, rd, rn, rm); 124 } else { 125 return new Smulwb(machInst, rd, rn, rm); 126 } --- 9 unchanged lines hidden (view full) --- 136 case 0x0: 137 return new Smlalbb(machInst, ra, rd, rn, rm); 138 case 0x1: 139 return new Smlaltb(machInst, ra, rd, rn, rm); 140 case 0x2: 141 return new Smlalbt(machInst, ra, rd, rn, rm); 142 case 0x3: 143 return new Smlaltt(machInst, ra, rd, rn, rm); |
144 default: 145 M5_UNREACHABLE; |
|
140 } 141 case 0x3: 142 switch (bits(machInst, 6, 5)) { 143 case 0x0: 144 return new Smulbb(machInst, rd, rn, rm); 145 case 0x1: 146 return new Smultb(machInst, rd, rn, rm); 147 case 0x2: 148 return new Smulbt(machInst, rd, rn, rm); 149 case 0x3: 150 return new Smultt(machInst, rd, rn, rm); | 146 } 147 case 0x3: 148 switch (bits(machInst, 6, 5)) { 149 case 0x0: 150 return new Smulbb(machInst, rd, rn, rm); 151 case 0x1: 152 return new Smultb(machInst, rd, rn, rm); 153 case 0x2: 154 return new Smulbt(machInst, rd, rn, rm); 155 case 0x3: 156 return new Smultt(machInst, rd, rn, rm); |
157 default: 158 M5_UNREACHABLE; |
|
151 } | 159 } |
160 default: 161 M5_UNREACHABLE; |
|
152 } 153 } 154 ''' 155}}; 156 157def format Thumb32MulMulAccAndAbsDiff() {{ 158 decode_block = ''' 159 { --- 36 unchanged lines hidden (view full) --- 196 case 0x1: 197 return new SmlabtCc(machInst, rd, rn, rm, ra); 198 case 0x2: 199 return new SmlatbCc(machInst, rd, rn, rm, ra); 200 case 0x3: 201 return new SmlattCc(machInst, rd, rn, rm, ra); 202 } 203 } | 162 } 163 } 164 ''' 165}}; 166 167def format Thumb32MulMulAccAndAbsDiff() {{ 168 decode_block = ''' 169 { --- 36 unchanged lines hidden (view full) --- 206 case 0x1: 207 return new SmlabtCc(machInst, rd, rn, rm, ra); 208 case 0x2: 209 return new SmlatbCc(machInst, rd, rn, rm, ra); 210 case 0x3: 211 return new SmlattCc(machInst, rd, rn, rm, ra); 212 } 213 } |
214 M5_UNREACHABLE; |
|
204 case 0x2: 205 if (ra == 0xf) { 206 if (bits(machInst, 4)) { 207 return new SmuadxCc(machInst, rd, rn, rm); 208 } else { 209 return new SmuadCc(machInst, rd, rn, rm); 210 } 211 } else { --- 54 unchanged lines hidden (view full) --- 266 case 0x7: 267 if (op2 != 0x0) { 268 return new Unknown(machInst); 269 } else if (ra == 0xf) { 270 return new Usad8(machInst, rd, rn, rm); 271 } else { 272 return new Usada8(machInst, rd, rn, rm, ra); 273 } | 215 case 0x2: 216 if (ra == 0xf) { 217 if (bits(machInst, 4)) { 218 return new SmuadxCc(machInst, rd, rn, rm); 219 } else { 220 return new SmuadCc(machInst, rd, rn, rm); 221 } 222 } else { --- 54 unchanged lines hidden (view full) --- 277 case 0x7: 278 if (op2 != 0x0) { 279 return new Unknown(machInst); 280 } else if (ra == 0xf) { 281 return new Usad8(machInst, rd, rn, rm); 282 } else { 283 return new Usada8(machInst, rd, rn, rm, ra); 284 } |
285 default: 286 M5_UNREACHABLE; |
|
274 } 275 } 276 ''' 277}}; 278 279def format Thumb32LongMulMulAccAndDiv() {{ 280 decode_block = ''' 281 { --- 170 unchanged lines hidden --- | 287 } 288 } 289 ''' 290}}; 291 292def format Thumb32LongMulMulAccAndDiv() {{ 293 decode_block = ''' 294 { --- 170 unchanged lines hidden --- |