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 --- 142 unchanged lines hidden (view full) --- 151 return new Ssat(machInst, rd, satImm + 1, rn, imm, type); 152 } else if (bits(op1, 2, 1) == 3) { 153 return new Usat(machInst, rd, satImm, rn, imm, type); 154 } 155 return new Unknown(machInst); 156 } 157 switch (op1) { 158 case 0x0: |
159 { |
160 const IntRegIndex rn = 161 (IntRegIndex)(uint32_t)bits(machInst, 19, 16); 162 const IntRegIndex rd = 163 (IntRegIndex)(uint32_t)bits(machInst, 15, 12); 164 const IntRegIndex rm = 165 (IntRegIndex)(uint32_t)bits(machInst, 3, 0); |
166 if (op2 == 0x3) { 167 const uint32_t rotation = 168 (uint32_t)bits(machInst, 11, 10) << 3; 169 if (a == 0xf) { 170 return new Sxtb16(machInst, rd, rotation, rm); 171 } else { 172 return new Sxtab16(machInst, rd, rn, rm, rotation); 173 } 174 } else if (op2 == 0x5) { 175 return new Sel(machInst, rd, rn, rm); |
176 } |
177 } 178 break; 179 case 0x2: 180 if (op2 == 0x1) { 181 const IntRegIndex rn = 182 (IntRegIndex)(uint32_t)bits(machInst, 3, 0); 183 const IntRegIndex rd = 184 (IntRegIndex)(uint32_t)bits(machInst, 15, 12); --- 557 unchanged lines hidden (view full) --- 742 return new Uhsub8Reg(machInst, rd, rn, rm, 0, LSL); 743 } 744 break; 745 } 746 } 747 } else if (bits(op1, 3, 2) == 0x2 && bits(op2, 3, 2) == 0x2) { 748 const uint32_t op1 = bits(machInst, 21, 20); 749 const uint32_t op2 = bits(machInst, 5, 4); |
750 const IntRegIndex rd = 751 (IntRegIndex)(uint32_t)bits(machInst, 11, 8); 752 const IntRegIndex rm = 753 (IntRegIndex)(uint32_t)bits(machInst, 3, 0); |
754 switch (op1) { 755 case 0x0: |
756 switch (op2) { 757 case 0x0: 758 return new QaddRegCc(machInst, rd, 759 rm, rn, 0, LSL); 760 case 0x1: 761 return new QdaddRegCc(machInst, rd, 762 rm, rn, 0, LSL); 763 case 0x2: 764 return new QsubRegCc(machInst, rd, 765 rm, rn, 0, LSL); 766 case 0x3: 767 return new QdsubRegCc(machInst, rd, 768 rm, rn, 0, LSL); |
769 } 770 break; 771 case 0x1: |
772 switch (op2) { 773 case 0x0: 774 return new Rev(machInst, rd, rn); 775 case 0x1: 776 return new Rev16(machInst, rd, rn); 777 case 0x2: 778 return new WarnUnimplemented("rbit", machInst); 779 case 0x3: 780 return new Revsh(machInst, rd, rn); |
781 } 782 break; 783 case 0x2: 784 if (op2 == 0) { |
785 return new Sel(machInst, rd, rn, rm); |
786 } 787 break; 788 case 0x3: 789 if (op2 == 0) { 790 return new WarnUnimplemented("clz", machInst); 791 } 792 } 793 } --- 540 unchanged lines hidden --- |