| 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 #include "src/compiler/machine-operator.h" | 5 #include "src/compiler/machine-operator.h" | 
| 6 | 6 | 
| 7 #include "src/base/lazy-instance.h" | 7 #include "src/base/lazy-instance.h" | 
| 8 #include "src/compiler/opcodes.h" | 8 #include "src/compiler/opcodes.h" | 
| 9 #include "src/compiler/operator.h" | 9 #include "src/compiler/operator.h" | 
| 10 | 10 | 
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 256   V(Int32x4GreaterThan, Operator::kNoProperties, 2, 0, 1)                  \ | 256   V(Int32x4GreaterThan, Operator::kNoProperties, 2, 0, 1)                  \ | 
| 257   V(Int32x4GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)           \ | 257   V(Int32x4GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)           \ | 
| 258   V(Int32x4FromFloat32x4, Operator::kNoProperties, 1, 0, 1)                \ | 258   V(Int32x4FromFloat32x4, Operator::kNoProperties, 1, 0, 1)                \ | 
| 259   V(Uint32x4Min, Operator::kCommutative, 2, 0, 1)                          \ | 259   V(Uint32x4Min, Operator::kCommutative, 2, 0, 1)                          \ | 
| 260   V(Uint32x4Max, Operator::kCommutative, 2, 0, 1)                          \ | 260   V(Uint32x4Max, Operator::kCommutative, 2, 0, 1)                          \ | 
| 261   V(Uint32x4LessThan, Operator::kNoProperties, 2, 0, 1)                    \ | 261   V(Uint32x4LessThan, Operator::kNoProperties, 2, 0, 1)                    \ | 
| 262   V(Uint32x4LessThanOrEqual, Operator::kNoProperties, 2, 0, 1)             \ | 262   V(Uint32x4LessThanOrEqual, Operator::kNoProperties, 2, 0, 1)             \ | 
| 263   V(Uint32x4GreaterThan, Operator::kNoProperties, 2, 0, 1)                 \ | 263   V(Uint32x4GreaterThan, Operator::kNoProperties, 2, 0, 1)                 \ | 
| 264   V(Uint32x4GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)          \ | 264   V(Uint32x4GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)          \ | 
| 265   V(Uint32x4FromFloat32x4, Operator::kNoProperties, 1, 0, 1)               \ | 265   V(Uint32x4FromFloat32x4, Operator::kNoProperties, 1, 0, 1)               \ | 
| 266   V(CreateBool32x4, Operator::kNoProperties, 4, 0, 1)                      \ |  | 
| 267   V(Bool32x4And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ |  | 
| 268   V(Bool32x4Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ |  | 
| 269   V(Bool32x4Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ |  | 
| 270   V(Bool32x4Not, Operator::kNoProperties, 1, 0, 1)                         \ |  | 
| 271   V(Bool32x4AnyTrue, Operator::kNoProperties, 1, 0, 1)                     \ |  | 
| 272   V(Bool32x4AllTrue, Operator::kNoProperties, 1, 0, 1)                     \ |  | 
| 273   V(Bool32x4Swizzle, Operator::kNoProperties, 5, 0, 1)                     \ |  | 
| 274   V(Bool32x4Shuffle, Operator::kNoProperties, 6, 0, 1)                     \ |  | 
| 275   V(Bool32x4Equal, Operator::kCommutative, 2, 0, 1)                        \ |  | 
| 276   V(Bool32x4NotEqual, Operator::kCommutative, 2, 0, 1)                     \ |  | 
| 277   V(CreateInt16x8, Operator::kNoProperties, 8, 0, 1)                       \ | 266   V(CreateInt16x8, Operator::kNoProperties, 8, 0, 1)                       \ | 
| 278   V(Int16x8Neg, Operator::kNoProperties, 1, 0, 1)                          \ | 267   V(Int16x8Neg, Operator::kNoProperties, 1, 0, 1)                          \ | 
| 279   V(Int16x8Add, Operator::kCommutative, 2, 0, 1)                           \ | 268   V(Int16x8Add, Operator::kCommutative, 2, 0, 1)                           \ | 
| 280   V(Int16x8AddSaturate, Operator::kCommutative, 2, 0, 1)                   \ | 269   V(Int16x8AddSaturate, Operator::kCommutative, 2, 0, 1)                   \ | 
| 281   V(Int16x8Sub, Operator::kNoProperties, 2, 0, 1)                          \ | 270   V(Int16x8Sub, Operator::kNoProperties, 2, 0, 1)                          \ | 
| 282   V(Int16x8SubSaturate, Operator::kNoProperties, 2, 0, 1)                  \ | 271   V(Int16x8SubSaturate, Operator::kNoProperties, 2, 0, 1)                  \ | 
| 283   V(Int16x8Mul, Operator::kCommutative, 2, 0, 1)                           \ | 272   V(Int16x8Mul, Operator::kCommutative, 2, 0, 1)                           \ | 
| 284   V(Int16x8Min, Operator::kCommutative, 2, 0, 1)                           \ | 273   V(Int16x8Min, Operator::kCommutative, 2, 0, 1)                           \ | 
| 285   V(Int16x8Max, Operator::kCommutative, 2, 0, 1)                           \ | 274   V(Int16x8Max, Operator::kCommutative, 2, 0, 1)                           \ | 
| 286   V(Int16x8Equal, Operator::kCommutative, 2, 0, 1)                         \ | 275   V(Int16x8Equal, Operator::kCommutative, 2, 0, 1)                         \ | 
| 287   V(Int16x8NotEqual, Operator::kCommutative, 2, 0, 1)                      \ | 276   V(Int16x8NotEqual, Operator::kCommutative, 2, 0, 1)                      \ | 
| 288   V(Int16x8LessThan, Operator::kNoProperties, 2, 0, 1)                     \ | 277   V(Int16x8LessThan, Operator::kNoProperties, 2, 0, 1)                     \ | 
| 289   V(Int16x8LessThanOrEqual, Operator::kNoProperties, 2, 0, 1)              \ | 278   V(Int16x8LessThanOrEqual, Operator::kNoProperties, 2, 0, 1)              \ | 
| 290   V(Int16x8GreaterThan, Operator::kNoProperties, 2, 0, 1)                  \ | 279   V(Int16x8GreaterThan, Operator::kNoProperties, 2, 0, 1)                  \ | 
| 291   V(Int16x8GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)           \ | 280   V(Int16x8GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)           \ | 
| 292   V(Uint16x8AddSaturate, Operator::kCommutative, 2, 0, 1)                  \ | 281   V(Uint16x8AddSaturate, Operator::kCommutative, 2, 0, 1)                  \ | 
| 293   V(Uint16x8SubSaturate, Operator::kNoProperties, 2, 0, 1)                 \ | 282   V(Uint16x8SubSaturate, Operator::kNoProperties, 2, 0, 1)                 \ | 
| 294   V(Uint16x8Min, Operator::kCommutative, 2, 0, 1)                          \ | 283   V(Uint16x8Min, Operator::kCommutative, 2, 0, 1)                          \ | 
| 295   V(Uint16x8Max, Operator::kCommutative, 2, 0, 1)                          \ | 284   V(Uint16x8Max, Operator::kCommutative, 2, 0, 1)                          \ | 
| 296   V(Uint16x8LessThan, Operator::kNoProperties, 2, 0, 1)                    \ | 285   V(Uint16x8LessThan, Operator::kNoProperties, 2, 0, 1)                    \ | 
| 297   V(Uint16x8LessThanOrEqual, Operator::kNoProperties, 2, 0, 1)             \ | 286   V(Uint16x8LessThanOrEqual, Operator::kNoProperties, 2, 0, 1)             \ | 
| 298   V(Uint16x8GreaterThan, Operator::kNoProperties, 2, 0, 1)                 \ | 287   V(Uint16x8GreaterThan, Operator::kNoProperties, 2, 0, 1)                 \ | 
| 299   V(Uint16x8GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)          \ | 288   V(Uint16x8GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)          \ | 
| 300   V(CreateBool16x8, Operator::kNoProperties, 8, 0, 1)                      \ |  | 
| 301   V(Bool16x8And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ |  | 
| 302   V(Bool16x8Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ |  | 
| 303   V(Bool16x8Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ |  | 
| 304   V(Bool16x8Not, Operator::kNoProperties, 1, 0, 1)                         \ |  | 
| 305   V(Bool16x8AnyTrue, Operator::kNoProperties, 1, 0, 1)                     \ |  | 
| 306   V(Bool16x8AllTrue, Operator::kNoProperties, 1, 0, 1)                     \ |  | 
| 307   V(Bool16x8Swizzle, Operator::kNoProperties, 9, 0, 1)                     \ |  | 
| 308   V(Bool16x8Shuffle, Operator::kNoProperties, 10, 0, 1)                    \ |  | 
| 309   V(Bool16x8Equal, Operator::kCommutative, 2, 0, 1)                        \ |  | 
| 310   V(Bool16x8NotEqual, Operator::kCommutative, 2, 0, 1)                     \ |  | 
| 311   V(CreateInt8x16, Operator::kNoProperties, 16, 0, 1)                      \ | 289   V(CreateInt8x16, Operator::kNoProperties, 16, 0, 1)                      \ | 
| 312   V(Int8x16Neg, Operator::kNoProperties, 1, 0, 1)                          \ | 290   V(Int8x16Neg, Operator::kNoProperties, 1, 0, 1)                          \ | 
| 313   V(Int8x16Add, Operator::kCommutative, 2, 0, 1)                           \ | 291   V(Int8x16Add, Operator::kCommutative, 2, 0, 1)                           \ | 
| 314   V(Int8x16AddSaturate, Operator::kCommutative, 2, 0, 1)                   \ | 292   V(Int8x16AddSaturate, Operator::kCommutative, 2, 0, 1)                   \ | 
| 315   V(Int8x16Sub, Operator::kNoProperties, 2, 0, 1)                          \ | 293   V(Int8x16Sub, Operator::kNoProperties, 2, 0, 1)                          \ | 
| 316   V(Int8x16SubSaturate, Operator::kNoProperties, 2, 0, 1)                  \ | 294   V(Int8x16SubSaturate, Operator::kNoProperties, 2, 0, 1)                  \ | 
| 317   V(Int8x16Mul, Operator::kCommutative, 2, 0, 1)                           \ | 295   V(Int8x16Mul, Operator::kCommutative, 2, 0, 1)                           \ | 
| 318   V(Int8x16Min, Operator::kCommutative, 2, 0, 1)                           \ | 296   V(Int8x16Min, Operator::kCommutative, 2, 0, 1)                           \ | 
| 319   V(Int8x16Max, Operator::kCommutative, 2, 0, 1)                           \ | 297   V(Int8x16Max, Operator::kCommutative, 2, 0, 1)                           \ | 
| 320   V(Int8x16Equal, Operator::kCommutative, 2, 0, 1)                         \ | 298   V(Int8x16Equal, Operator::kCommutative, 2, 0, 1)                         \ | 
| 321   V(Int8x16NotEqual, Operator::kCommutative, 2, 0, 1)                      \ | 299   V(Int8x16NotEqual, Operator::kCommutative, 2, 0, 1)                      \ | 
| 322   V(Int8x16LessThan, Operator::kNoProperties, 2, 0, 1)                     \ | 300   V(Int8x16LessThan, Operator::kNoProperties, 2, 0, 1)                     \ | 
| 323   V(Int8x16LessThanOrEqual, Operator::kNoProperties, 2, 0, 1)              \ | 301   V(Int8x16LessThanOrEqual, Operator::kNoProperties, 2, 0, 1)              \ | 
| 324   V(Int8x16GreaterThan, Operator::kNoProperties, 2, 0, 1)                  \ | 302   V(Int8x16GreaterThan, Operator::kNoProperties, 2, 0, 1)                  \ | 
| 325   V(Int8x16GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)           \ | 303   V(Int8x16GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)           \ | 
| 326   V(Uint8x16AddSaturate, Operator::kCommutative, 2, 0, 1)                  \ | 304   V(Uint8x16AddSaturate, Operator::kCommutative, 2, 0, 1)                  \ | 
| 327   V(Uint8x16SubSaturate, Operator::kNoProperties, 2, 0, 1)                 \ | 305   V(Uint8x16SubSaturate, Operator::kNoProperties, 2, 0, 1)                 \ | 
| 328   V(Uint8x16Min, Operator::kCommutative, 2, 0, 1)                          \ | 306   V(Uint8x16Min, Operator::kCommutative, 2, 0, 1)                          \ | 
| 329   V(Uint8x16Max, Operator::kCommutative, 2, 0, 1)                          \ | 307   V(Uint8x16Max, Operator::kCommutative, 2, 0, 1)                          \ | 
| 330   V(Uint8x16LessThan, Operator::kNoProperties, 2, 0, 1)                    \ | 308   V(Uint8x16LessThan, Operator::kNoProperties, 2, 0, 1)                    \ | 
| 331   V(Uint8x16LessThanOrEqual, Operator::kNoProperties, 2, 0, 1)             \ | 309   V(Uint8x16LessThanOrEqual, Operator::kNoProperties, 2, 0, 1)             \ | 
| 332   V(Uint8x16GreaterThan, Operator::kNoProperties, 2, 0, 1)                 \ | 310   V(Uint8x16GreaterThan, Operator::kNoProperties, 2, 0, 1)                 \ | 
| 333   V(Uint8x16GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)          \ | 311   V(Uint8x16GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1)          \ | 
| 334   V(CreateBool8x16, Operator::kNoProperties, 16, 0, 1)                     \ |  | 
| 335   V(Bool8x16And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ |  | 
| 336   V(Bool8x16Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ |  | 
| 337   V(Bool8x16Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ |  | 
| 338   V(Bool8x16Not, Operator::kNoProperties, 1, 0, 1)                         \ |  | 
| 339   V(Bool8x16AnyTrue, Operator::kNoProperties, 1, 0, 1)                     \ |  | 
| 340   V(Bool8x16AllTrue, Operator::kNoProperties, 1, 0, 1)                     \ |  | 
| 341   V(Bool8x16Swizzle, Operator::kNoProperties, 17, 0, 1)                    \ |  | 
| 342   V(Bool8x16Shuffle, Operator::kNoProperties, 18, 0, 1)                    \ |  | 
| 343   V(Bool8x16Equal, Operator::kCommutative, 2, 0, 1)                        \ |  | 
| 344   V(Bool8x16NotEqual, Operator::kCommutative, 2, 0, 1)                     \ |  | 
| 345   V(Simd128Load, Operator::kNoProperties, 2, 0, 1)                         \ | 312   V(Simd128Load, Operator::kNoProperties, 2, 0, 1)                         \ | 
| 346   V(Simd128Load1, Operator::kNoProperties, 2, 0, 1)                        \ | 313   V(Simd128Load1, Operator::kNoProperties, 2, 0, 1)                        \ | 
| 347   V(Simd128Load2, Operator::kNoProperties, 2, 0, 1)                        \ | 314   V(Simd128Load2, Operator::kNoProperties, 2, 0, 1)                        \ | 
| 348   V(Simd128Load3, Operator::kNoProperties, 2, 0, 1)                        \ | 315   V(Simd128Load3, Operator::kNoProperties, 2, 0, 1)                        \ | 
| 349   V(Simd128Store, Operator::kNoProperties, 3, 0, 1)                        \ | 316   V(Simd128Store, Operator::kNoProperties, 3, 0, 1)                        \ | 
| 350   V(Simd128Store1, Operator::kNoProperties, 3, 0, 1)                       \ | 317   V(Simd128Store1, Operator::kNoProperties, 3, 0, 1)                       \ | 
| 351   V(Simd128Store2, Operator::kNoProperties, 3, 0, 1)                       \ | 318   V(Simd128Store2, Operator::kNoProperties, 3, 0, 1)                       \ | 
| 352   V(Simd128Store3, Operator::kNoProperties, 3, 0, 1)                       \ | 319   V(Simd128Store3, Operator::kNoProperties, 3, 0, 1)                       \ | 
| 353   V(Simd128And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ | 320   V(Simd128And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ | 
| 354   V(Simd128Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)   \ | 321   V(Simd128Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)   \ | 
| 355   V(Simd128Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ | 322   V(Simd128Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ | 
| 356   V(Simd128Not, Operator::kNoProperties, 1, 0, 1)                          \ | 323   V(Simd128Not, Operator::kNoProperties, 1, 0, 1)                          \ | 
| 357   V(Simd32x4Select, Operator::kNoProperties, 3, 0, 1)                      \ | 324   V(Simd32x4Select, Operator::kNoProperties, 3, 0, 1)                      \ | 
| 358   V(Simd16x8Select, Operator::kNoProperties, 3, 0, 1)                      \ | 325   V(Simd16x8Select, Operator::kNoProperties, 3, 0, 1)                      \ | 
| 359   V(Simd8x16Select, Operator::kNoProperties, 3, 0, 1) | 326   V(Simd8x16Select, Operator::kNoProperties, 3, 0, 1)                      \ | 
|  | 327   V(Simd1x4Not, Operator::kNoProperties, 1, 0, 1)                          \ | 
|  | 328   V(Simd1x4AnyTrue, Operator::kNoProperties, 1, 0, 1)                      \ | 
|  | 329   V(Simd1x4AllTrue, Operator::kNoProperties, 1, 0, 1)                      \ | 
|  | 330   V(Simd1x4And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ | 
|  | 331   V(Simd1x4Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)   \ | 
|  | 332   V(Simd1x4Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ | 
|  | 333   V(Simd1x8And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ | 
|  | 334   V(Simd1x8Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)   \ | 
|  | 335   V(Simd1x8Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ | 
|  | 336   V(Simd1x8Not, Operator::kNoProperties, 1, 0, 1)                          \ | 
|  | 337   V(Simd1x8AnyTrue, Operator::kNoProperties, 1, 0, 1)                      \ | 
|  | 338   V(Simd1x8AllTrue, Operator::kNoProperties, 1, 0, 1)                      \ | 
|  | 339   V(Simd1x16And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ | 
|  | 340   V(Simd1x16Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1)  \ | 
|  | 341   V(Simd1x16Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ | 
|  | 342   V(Simd1x16Not, Operator::kNoProperties, 1, 0, 1)                         \ | 
|  | 343   V(Simd1x16AnyTrue, Operator::kNoProperties, 1, 0, 1)                     \ | 
|  | 344   V(Simd1x16AllTrue, Operator::kNoProperties, 1, 0, 1) | 
| 360 | 345 | 
| 361 #define PURE_OPTIONAL_OP_LIST(V)                            \ | 346 #define PURE_OPTIONAL_OP_LIST(V)                            \ | 
| 362   V(Word32Ctz, Operator::kNoProperties, 1, 0, 1)            \ | 347   V(Word32Ctz, Operator::kNoProperties, 1, 0, 1)            \ | 
| 363   V(Word64Ctz, Operator::kNoProperties, 1, 0, 1)            \ | 348   V(Word64Ctz, Operator::kNoProperties, 1, 0, 1)            \ | 
| 364   V(Word32ReverseBits, Operator::kNoProperties, 1, 0, 1)    \ | 349   V(Word32ReverseBits, Operator::kNoProperties, 1, 0, 1)    \ | 
| 365   V(Word64ReverseBits, Operator::kNoProperties, 1, 0, 1)    \ | 350   V(Word64ReverseBits, Operator::kNoProperties, 1, 0, 1)    \ | 
| 366   V(Word32ReverseBytes, Operator::kNoProperties, 1, 0, 1)   \ | 351   V(Word32ReverseBytes, Operator::kNoProperties, 1, 0, 1)   \ | 
| 367   V(Word64ReverseBytes, Operator::kNoProperties, 1, 0, 1)   \ | 352   V(Word64ReverseBytes, Operator::kNoProperties, 1, 0, 1)   \ | 
| 368   V(Word32Popcnt, Operator::kNoProperties, 1, 0, 1)         \ | 353   V(Word32Popcnt, Operator::kNoProperties, 1, 0, 1)         \ | 
| 369   V(Word64Popcnt, Operator::kNoProperties, 1, 0, 1)         \ | 354   V(Word64Popcnt, Operator::kNoProperties, 1, 0, 1)         \ | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 422   V(Uint32) | 407   V(Uint32) | 
| 423 | 408 | 
| 424 #define ATOMIC_REPRESENTATION_LIST(V) \ | 409 #define ATOMIC_REPRESENTATION_LIST(V) \ | 
| 425   V(kWord8)                           \ | 410   V(kWord8)                           \ | 
| 426   V(kWord16)                          \ | 411   V(kWord16)                          \ | 
| 427   V(kWord32) | 412   V(kWord32) | 
| 428 | 413 | 
| 429 #define SIMD_LANE_OP_LIST(V) \ | 414 #define SIMD_LANE_OP_LIST(V) \ | 
| 430   V(Float32x4, 4)            \ | 415   V(Float32x4, 4)            \ | 
| 431   V(Int32x4, 4)              \ | 416   V(Int32x4, 4)              \ | 
| 432   V(Bool32x4, 4)             \ |  | 
| 433   V(Int16x8, 8)              \ | 417   V(Int16x8, 8)              \ | 
| 434   V(Bool16x8, 8)             \ | 418   V(Int8x16, 16) | 
| 435   V(Int8x16, 16)             \ |  | 
| 436   V(Bool8x16, 16) |  | 
| 437 | 419 | 
| 438 #define SIMD_FORMAT_LIST(V) \ | 420 #define SIMD_FORMAT_LIST(V) \ | 
| 439   V(32x4, 32)               \ | 421   V(32x4, 32)               \ | 
| 440   V(16x8, 16)               \ | 422   V(16x8, 16)               \ | 
| 441   V(8x16, 8) | 423   V(8x16, 8) | 
| 442 | 424 | 
| 443 #define STACK_SLOT_CACHED_SIZES_LIST(V) V(4) V(8) V(16) | 425 #define STACK_SLOT_CACHED_SIZES_LIST(V) V(4) V(8) V(16) | 
| 444 | 426 | 
| 445 struct StackSlotOperator : public Operator1<int> { | 427 struct StackSlotOperator : public Operator1<int> { | 
| 446   explicit StackSlotOperator(int size) | 428   explicit StackSlotOperator(int size) | 
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 666 | 648 | 
| 667 const Operator* MachineOperatorBuilder::UnalignedStore( | 649 const Operator* MachineOperatorBuilder::UnalignedStore( | 
| 668     UnalignedStoreRepresentation rep) { | 650     UnalignedStoreRepresentation rep) { | 
| 669   switch (rep) { | 651   switch (rep) { | 
| 670 #define STORE(kRep)                 \ | 652 #define STORE(kRep)                 \ | 
| 671   case MachineRepresentation::kRep: \ | 653   case MachineRepresentation::kRep: \ | 
| 672     return &cache_.kUnalignedStore##kRep; | 654     return &cache_.kUnalignedStore##kRep; | 
| 673     MACHINE_REPRESENTATION_LIST(STORE) | 655     MACHINE_REPRESENTATION_LIST(STORE) | 
| 674 #undef STORE | 656 #undef STORE | 
| 675     case MachineRepresentation::kBit: | 657     case MachineRepresentation::kBit: | 
|  | 658     case MachineRepresentation::kSimd1x4: | 
|  | 659     case MachineRepresentation::kSimd1x8: | 
|  | 660     case MachineRepresentation::kSimd1x16: | 
| 676     case MachineRepresentation::kNone: | 661     case MachineRepresentation::kNone: | 
| 677       break; | 662       break; | 
| 678   } | 663   } | 
| 679   UNREACHABLE(); | 664   UNREACHABLE(); | 
| 680   return nullptr; | 665   return nullptr; | 
| 681 } | 666 } | 
| 682 | 667 | 
| 683 #define PURE(Name, properties, value_input_count, control_input_count, \ | 668 #define PURE(Name, properties, value_input_count, control_input_count, \ | 
| 684              output_count)                                             \ | 669              output_count)                                             \ | 
| 685   const Operator* MachineOperatorBuilder::Name() { return &cache_.k##Name; } | 670   const Operator* MachineOperatorBuilder::Name() { return &cache_.k##Name; } | 
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 749         return &cache_.k##Store##kRep##MapWriteBarrier;     \ | 734         return &cache_.k##Store##kRep##MapWriteBarrier;     \ | 
| 750       case kPointerWriteBarrier:                            \ | 735       case kPointerWriteBarrier:                            \ | 
| 751         return &cache_.k##Store##kRep##PointerWriteBarrier; \ | 736         return &cache_.k##Store##kRep##PointerWriteBarrier; \ | 
| 752       case kFullWriteBarrier:                               \ | 737       case kFullWriteBarrier:                               \ | 
| 753         return &cache_.k##Store##kRep##FullWriteBarrier;    \ | 738         return &cache_.k##Store##kRep##FullWriteBarrier;    \ | 
| 754     }                                                       \ | 739     }                                                       \ | 
| 755     break; | 740     break; | 
| 756     MACHINE_REPRESENTATION_LIST(STORE) | 741     MACHINE_REPRESENTATION_LIST(STORE) | 
| 757 #undef STORE | 742 #undef STORE | 
| 758     case MachineRepresentation::kBit: | 743     case MachineRepresentation::kBit: | 
|  | 744     case MachineRepresentation::kSimd1x4: | 
|  | 745     case MachineRepresentation::kSimd1x8: | 
|  | 746     case MachineRepresentation::kSimd1x16: | 
| 759     case MachineRepresentation::kNone: | 747     case MachineRepresentation::kNone: | 
| 760       break; | 748       break; | 
| 761   } | 749   } | 
| 762   UNREACHABLE(); | 750   UNREACHABLE(); | 
| 763   return nullptr; | 751   return nullptr; | 
| 764 } | 752 } | 
| 765 | 753 | 
| 766 const Operator* MachineOperatorBuilder::ProtectedStore( | 754 const Operator* MachineOperatorBuilder::ProtectedStore( | 
| 767     MachineRepresentation rep) { | 755     MachineRepresentation rep) { | 
| 768   switch (rep) { | 756   switch (rep) { | 
| 769 #define STORE(kRep)                       \ | 757 #define STORE(kRep)                       \ | 
| 770   case MachineRepresentation::kRep:       \ | 758   case MachineRepresentation::kRep:       \ | 
| 771     return &cache_.kProtectedStore##kRep; \ | 759     return &cache_.kProtectedStore##kRep; \ | 
| 772     break; | 760     break; | 
| 773     MACHINE_REPRESENTATION_LIST(STORE) | 761     MACHINE_REPRESENTATION_LIST(STORE) | 
| 774 #undef STORE | 762 #undef STORE | 
| 775     case MachineRepresentation::kBit: | 763     case MachineRepresentation::kBit: | 
|  | 764     case MachineRepresentation::kSimd1x4: | 
|  | 765     case MachineRepresentation::kSimd1x8: | 
|  | 766     case MachineRepresentation::kSimd1x16: | 
| 776     case MachineRepresentation::kNone: | 767     case MachineRepresentation::kNone: | 
| 777       break; | 768       break; | 
| 778   } | 769   } | 
| 779   UNREACHABLE(); | 770   UNREACHABLE(); | 
| 780   return nullptr; | 771   return nullptr; | 
| 781 } | 772 } | 
| 782 | 773 | 
| 783 const Operator* MachineOperatorBuilder::UnsafePointerAdd() { | 774 const Operator* MachineOperatorBuilder::UnsafePointerAdd() { | 
| 784   return &cache_.kUnsafePointerAdd; | 775   return &cache_.kUnsafePointerAdd; | 
| 785 } | 776 } | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 807 | 798 | 
| 808 const Operator* MachineOperatorBuilder::CheckedStore( | 799 const Operator* MachineOperatorBuilder::CheckedStore( | 
| 809     CheckedStoreRepresentation rep) { | 800     CheckedStoreRepresentation rep) { | 
| 810   switch (rep) { | 801   switch (rep) { | 
| 811 #define STORE(kRep)                 \ | 802 #define STORE(kRep)                 \ | 
| 812   case MachineRepresentation::kRep: \ | 803   case MachineRepresentation::kRep: \ | 
| 813     return &cache_.kCheckedStore##kRep; | 804     return &cache_.kCheckedStore##kRep; | 
| 814     MACHINE_REPRESENTATION_LIST(STORE) | 805     MACHINE_REPRESENTATION_LIST(STORE) | 
| 815 #undef STORE | 806 #undef STORE | 
| 816     case MachineRepresentation::kBit: | 807     case MachineRepresentation::kBit: | 
|  | 808     case MachineRepresentation::kSimd1x4: | 
|  | 809     case MachineRepresentation::kSimd1x8: | 
|  | 810     case MachineRepresentation::kSimd1x16: | 
| 817     case MachineRepresentation::kNone: | 811     case MachineRepresentation::kNone: | 
| 818       break; | 812       break; | 
| 819   } | 813   } | 
| 820   UNREACHABLE(); | 814   UNREACHABLE(); | 
| 821   return nullptr; | 815   return nullptr; | 
| 822 } | 816 } | 
| 823 | 817 | 
| 824 const Operator* MachineOperatorBuilder::AtomicLoad(LoadRepresentation rep) { | 818 const Operator* MachineOperatorBuilder::AtomicLoad(LoadRepresentation rep) { | 
| 825 #define LOAD(Type)                    \ | 819 #define LOAD(Type)                    \ | 
| 826   if (rep == MachineType::Type()) {   \ | 820   if (rep == MachineType::Type()) {   \ | 
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 893     return new (zone_)                                                         \ | 887     return new (zone_)                                                         \ | 
| 894         Operator1<uint32_t>(IrOpcode::kSimd##format##Swizzle, Operator::kPure, \ | 888         Operator1<uint32_t>(IrOpcode::kSimd##format##Swizzle, Operator::kPure, \ | 
| 895                             "Swizzle", 2, 0, 0, 1, 0, 0, swizzle);             \ | 889                             "Swizzle", 2, 0, 0, 1, 0, 0, swizzle);             \ | 
| 896   } | 890   } | 
| 897 SIMD_FORMAT_LIST(SIMD_PERMUTE_OPS) | 891 SIMD_FORMAT_LIST(SIMD_PERMUTE_OPS) | 
| 898 #undef SIMD_PERMUTE_OPS | 892 #undef SIMD_PERMUTE_OPS | 
| 899 | 893 | 
| 900 }  // namespace compiler | 894 }  // namespace compiler | 
| 901 }  // namespace internal | 895 }  // namespace internal | 
| 902 }  // namespace v8 | 896 }  // namespace v8 | 
| OLD | NEW | 
|---|