| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_MACHINE_TYPE_H_ | 5 #ifndef V8_MACHINE_TYPE_H_ |
| 6 #define V8_MACHINE_TYPE_H_ | 6 #define V8_MACHINE_TYPE_H_ |
| 7 | 7 |
| 8 #include <iosfwd> | 8 #include <iosfwd> |
| 9 | 9 |
| 10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 kWord16, | 22 kWord16, |
| 23 kWord32, | 23 kWord32, |
| 24 kWord64, | 24 kWord64, |
| 25 kTaggedSigned, | 25 kTaggedSigned, |
| 26 kTaggedPointer, | 26 kTaggedPointer, |
| 27 kTagged, | 27 kTagged, |
| 28 // FP representations must be last, and in order of increasing size. | 28 // FP representations must be last, and in order of increasing size. |
| 29 kFloat32, | 29 kFloat32, |
| 30 kFloat64, | 30 kFloat64, |
| 31 kSimd128, | 31 kSimd128, |
| 32 kSimd1x4, // SIMD boolean vector types. |
| 33 kSimd1x8, |
| 34 kSimd1x16, |
| 32 kFirstFPRepresentation = kFloat32, | 35 kFirstFPRepresentation = kFloat32, |
| 33 kLastRepresentation = kSimd128 | 36 kLastRepresentation = kSimd1x16 |
| 34 }; | 37 }; |
| 35 | 38 |
| 36 static_assert(static_cast<int>(MachineRepresentation::kLastRepresentation) < | 39 static_assert(static_cast<int>(MachineRepresentation::kLastRepresentation) < |
| 37 kIntSize * kBitsPerByte, | 40 kIntSize * kBitsPerByte, |
| 38 "Bit masks of MachineRepresentation should fit in an int"); | 41 "Bit masks of MachineRepresentation should fit in an int"); |
| 39 | 42 |
| 40 const char* MachineReprToString(MachineRepresentation); | 43 const char* MachineReprToString(MachineRepresentation); |
| 41 | 44 |
| 42 enum class MachineSemantic { | 45 enum class MachineSemantic { |
| 43 kNone, | 46 kNone, |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 return MachineType(MachineRepresentation::kFloat32, | 123 return MachineType(MachineRepresentation::kFloat32, |
| 121 MachineSemantic::kNumber); | 124 MachineSemantic::kNumber); |
| 122 } | 125 } |
| 123 static MachineType Float64() { | 126 static MachineType Float64() { |
| 124 return MachineType(MachineRepresentation::kFloat64, | 127 return MachineType(MachineRepresentation::kFloat64, |
| 125 MachineSemantic::kNumber); | 128 MachineSemantic::kNumber); |
| 126 } | 129 } |
| 127 static MachineType Simd128() { | 130 static MachineType Simd128() { |
| 128 return MachineType(MachineRepresentation::kSimd128, MachineSemantic::kNone); | 131 return MachineType(MachineRepresentation::kSimd128, MachineSemantic::kNone); |
| 129 } | 132 } |
| 133 static MachineType Simd1x4() { |
| 134 return MachineType(MachineRepresentation::kSimd1x4, MachineSemantic::kNone); |
| 135 } |
| 136 static MachineType Simd1x8() { |
| 137 return MachineType(MachineRepresentation::kSimd1x8, MachineSemantic::kNone); |
| 138 } |
| 139 static MachineType Simd1x16() { |
| 140 return MachineType(MachineRepresentation::kSimd1x16, |
| 141 MachineSemantic::kNone); |
| 142 } |
| 130 static MachineType Pointer() { | 143 static MachineType Pointer() { |
| 131 return MachineType(PointerRepresentation(), MachineSemantic::kNone); | 144 return MachineType(PointerRepresentation(), MachineSemantic::kNone); |
| 132 } | 145 } |
| 133 static MachineType TaggedPointer() { | 146 static MachineType TaggedPointer() { |
| 134 return MachineType(MachineRepresentation::kTaggedPointer, | 147 return MachineType(MachineRepresentation::kTaggedPointer, |
| 135 MachineSemantic::kAny); | 148 MachineSemantic::kAny); |
| 136 } | 149 } |
| 137 static MachineType TaggedSigned() { | 150 static MachineType TaggedSigned() { |
| 138 return MachineType(MachineRepresentation::kTaggedSigned, | 151 return MachineType(MachineRepresentation::kTaggedSigned, |
| 139 MachineSemantic::kInt32); | 152 MachineSemantic::kInt32); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 166 } | 179 } |
| 167 static MachineType RepFloat32() { | 180 static MachineType RepFloat32() { |
| 168 return MachineType(MachineRepresentation::kFloat32, MachineSemantic::kNone); | 181 return MachineType(MachineRepresentation::kFloat32, MachineSemantic::kNone); |
| 169 } | 182 } |
| 170 static MachineType RepFloat64() { | 183 static MachineType RepFloat64() { |
| 171 return MachineType(MachineRepresentation::kFloat64, MachineSemantic::kNone); | 184 return MachineType(MachineRepresentation::kFloat64, MachineSemantic::kNone); |
| 172 } | 185 } |
| 173 static MachineType RepSimd128() { | 186 static MachineType RepSimd128() { |
| 174 return MachineType(MachineRepresentation::kSimd128, MachineSemantic::kNone); | 187 return MachineType(MachineRepresentation::kSimd128, MachineSemantic::kNone); |
| 175 } | 188 } |
| 189 static MachineType RepSimd1x4() { |
| 190 return MachineType(MachineRepresentation::kSimd1x4, MachineSemantic::kNone); |
| 191 } |
| 192 static MachineType RepSimd1x8() { |
| 193 return MachineType(MachineRepresentation::kSimd1x8, MachineSemantic::kNone); |
| 194 } |
| 195 static MachineType RepSimd1x16() { |
| 196 return MachineType(MachineRepresentation::kSimd1x16, |
| 197 MachineSemantic::kNone); |
| 198 } |
| 176 static MachineType RepTagged() { | 199 static MachineType RepTagged() { |
| 177 return MachineType(MachineRepresentation::kTagged, MachineSemantic::kNone); | 200 return MachineType(MachineRepresentation::kTagged, MachineSemantic::kNone); |
| 178 } | 201 } |
| 179 static MachineType RepBit() { | 202 static MachineType RepBit() { |
| 180 return MachineType(MachineRepresentation::kBit, MachineSemantic::kNone); | 203 return MachineType(MachineRepresentation::kBit, MachineSemantic::kNone); |
| 181 } | 204 } |
| 182 | 205 |
| 183 static MachineType TypeForRepresentation(const MachineRepresentation& rep, | 206 static MachineType TypeForRepresentation(const MachineRepresentation& rep, |
| 184 bool isSigned = true) { | 207 bool isSigned = true) { |
| 185 switch (rep) { | 208 switch (rep) { |
| 186 case MachineRepresentation::kNone: | 209 case MachineRepresentation::kNone: |
| 187 return MachineType::None(); | 210 return MachineType::None(); |
| 188 case MachineRepresentation::kBit: | 211 case MachineRepresentation::kBit: |
| 189 return MachineType::Bool(); | 212 return MachineType::Bool(); |
| 190 case MachineRepresentation::kWord8: | 213 case MachineRepresentation::kWord8: |
| 191 return isSigned ? MachineType::Int8() : MachineType::Uint8(); | 214 return isSigned ? MachineType::Int8() : MachineType::Uint8(); |
| 192 case MachineRepresentation::kWord16: | 215 case MachineRepresentation::kWord16: |
| 193 return isSigned ? MachineType::Int16() : MachineType::Uint16(); | 216 return isSigned ? MachineType::Int16() : MachineType::Uint16(); |
| 194 case MachineRepresentation::kWord32: | 217 case MachineRepresentation::kWord32: |
| 195 return isSigned ? MachineType::Int32() : MachineType::Uint32(); | 218 return isSigned ? MachineType::Int32() : MachineType::Uint32(); |
| 196 case MachineRepresentation::kWord64: | 219 case MachineRepresentation::kWord64: |
| 197 return isSigned ? MachineType::Int64() : MachineType::Uint64(); | 220 return isSigned ? MachineType::Int64() : MachineType::Uint64(); |
| 198 case MachineRepresentation::kFloat32: | 221 case MachineRepresentation::kFloat32: |
| 199 return MachineType::Float32(); | 222 return MachineType::Float32(); |
| 200 case MachineRepresentation::kFloat64: | 223 case MachineRepresentation::kFloat64: |
| 201 return MachineType::Float64(); | 224 return MachineType::Float64(); |
| 202 case MachineRepresentation::kSimd128: | 225 case MachineRepresentation::kSimd128: |
| 203 return MachineType::Simd128(); | 226 return MachineType::Simd128(); |
| 227 case MachineRepresentation::kSimd1x4: |
| 228 return MachineType::Simd1x4(); |
| 229 case MachineRepresentation::kSimd1x8: |
| 230 return MachineType::Simd1x8(); |
| 231 case MachineRepresentation::kSimd1x16: |
| 232 return MachineType::Simd1x16(); |
| 204 case MachineRepresentation::kTagged: | 233 case MachineRepresentation::kTagged: |
| 205 return MachineType::AnyTagged(); | 234 return MachineType::AnyTagged(); |
| 206 case MachineRepresentation::kTaggedSigned: | 235 case MachineRepresentation::kTaggedSigned: |
| 207 return MachineType::TaggedSigned(); | 236 return MachineType::TaggedSigned(); |
| 208 case MachineRepresentation::kTaggedPointer: | 237 case MachineRepresentation::kTaggedPointer: |
| 209 return MachineType::TaggedPointer(); | 238 return MachineType::TaggedPointer(); |
| 210 default: | 239 default: |
| 211 UNREACHABLE(); | 240 UNREACHABLE(); |
| 212 return MachineType::None(); | 241 return MachineType::None(); |
| 213 } | 242 } |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 UNREACHABLE(); | 305 UNREACHABLE(); |
| 277 return -1; | 306 return -1; |
| 278 } | 307 } |
| 279 | 308 |
| 280 typedef Signature<MachineType> MachineSignature; | 309 typedef Signature<MachineType> MachineSignature; |
| 281 | 310 |
| 282 } // namespace internal | 311 } // namespace internal |
| 283 } // namespace v8 | 312 } // namespace v8 |
| 284 | 313 |
| 285 #endif // V8_MACHINE_TYPE_H_ | 314 #endif // V8_MACHINE_TYPE_H_ |
| OLD | NEW |