fp.isa (7435:62bdb68bb314) | fp.isa (7591:aabe621e58df) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating --- 51 unchanged lines hidden (view full) --- 60 { 61 const uint32_t b = bits(machInst, 11, 8); 62 const bool a = bits(machInst, 23); 63 const bool l = bits(machInst, 21); 64 65 if (l) { 66 // Load instructions. 67 if (a) { | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating --- 51 unchanged lines hidden (view full) --- 60 { 61 const uint32_t b = bits(machInst, 11, 8); 62 const bool a = bits(machInst, 23); 63 const bool l = bits(machInst, 21); 64 65 if (l) { 66 // Load instructions. 67 if (a) { |
68 switch (b) { | 68 if (bits(b, 3, 2) != 3) { 69 switch (bits(b, 1, 0)) { 70 case 0x0: 71 return new WarnUnimplemented("vld1 single", machInst); 72 case 0x1: 73 return new WarnUnimplemented("vld2 single", machInst); 74 case 0x2: 75 return new WarnUnimplemented("vld3 single", machInst); 76 case 0x3: 77 return new WarnUnimplemented("vld4 single", machInst); 78 } 79 } else { 80 switch (bits(b, 1, 0)) { 81 case 0x0: 82 return new WarnUnimplemented("vld1 single all", 83 machInst); 84 case 0x1: 85 return new WarnUnimplemented("vld2 single all", 86 machInst); 87 case 0x2: 88 return new WarnUnimplemented("vld3 single all", 89 machInst); 90 case 0x3: 91 return new WarnUnimplemented("vld4 single all", 92 machInst); 93 } |
69 } | 94 } |
70 // Single. | |
71 } else { | 95 } else { |
72 switch (b) { | 96 switch (bits(b, 3, 1)) { 97 case 0x0: 98 return new WarnUnimplemented("vld4 multiple", machInst); 99 case 0x2: 100 return new WarnUnimplemented("vld3 multiple", machInst); 101 case 0x3: 102 return new WarnUnimplemented("vld1 multiple", machInst); 103 case 0x4: 104 return new WarnUnimplemented("vld2 multiple", machInst); 105 case 0x1: 106 if (b & 0x1) { 107 return new WarnUnimplemented("vld2 multiple", machInst); 108 } else { 109 return new WarnUnimplemented("vld1 multiple", machInst); 110 } 111 case 0x5: 112 if ((b & 0x1) == 0) { 113 return new WarnUnimplemented("vld1 multiple", machInst); 114 } else { 115 break; 116 } |
73 } | 117 } |
74 // Multiple. | |
75 } 76 } else { 77 // Store instructions. 78 if (a) { | 118 } 119 } else { 120 // Store instructions. 121 if (a) { |
79 switch (b) { | 122 if (bits(b, 3, 2) != 3) { 123 switch (bits(b, 1, 0)) { 124 case 0x0: 125 return new WarnUnimplemented("vst1 single", machInst); 126 case 0x1: 127 return new WarnUnimplemented("vst2 single", machInst); 128 case 0x2: 129 return new WarnUnimplemented("vst3 single", machInst); 130 case 0x3: 131 return new WarnUnimplemented("vst4 single", machInst); 132 } 133 } else { 134 switch (bits(b, 1, 0)) { 135 case 0x0: 136 return new WarnUnimplemented("vst1 single all", 137 machInst); 138 case 0x1: 139 return new WarnUnimplemented("vst2 single all", 140 machInst); 141 case 0x2: 142 return new WarnUnimplemented("vst3 single all", 143 machInst); 144 case 0x3: 145 return new WarnUnimplemented("vst4 single all", 146 machInst); 147 } |
80 } | 148 } |
81 // Single. | |
82 } else { | 149 } else { |
83 switch (b) { | 150 switch (bits(b, 3, 1)) { 151 case 0x0: 152 return new WarnUnimplemented("vst4 multiple", machInst); 153 case 0x2: 154 return new WarnUnimplemented("vst3 multiple", machInst); 155 case 0x3: 156 return new WarnUnimplemented("vst1 multiple", machInst); 157 case 0x4: 158 return new WarnUnimplemented("vst2 multiple", machInst); 159 case 0x1: 160 if (b & 0x1) { 161 return new WarnUnimplemented("vst2 multiple", machInst); 162 } else { 163 return new WarnUnimplemented("vst1 multiple", machInst); 164 } 165 case 0x5: 166 if ((b & 0x1) == 0) { 167 return new WarnUnimplemented("vst1 multiple", machInst); 168 } else { 169 break; 170 } |
84 } | 171 } |
85 // Multiple. | |
86 } 87 } | 172 } 173 } |
88 return new WarnUnimplemented("neon memory", machInst); | 174 return new Unknown(machInst); |
89 } 90 ''' 91 92 decoder_output += ''' 93 static StaticInstPtr 94 decodeNeonThreeRegistersSameLength(ExtMachInst machInst) 95 { 96 const bool u = THUMB ? bits(machInst, 28) : bits(machInst, 24); --- 1382 unchanged lines hidden --- | 175 } 176 ''' 177 178 decoder_output += ''' 179 static StaticInstPtr 180 decodeNeonThreeRegistersSameLength(ExtMachInst machInst) 181 { 182 const bool u = THUMB ? bits(machInst, 28) : bits(machInst, 24); --- 1382 unchanged lines hidden --- |