11cb0ef41Sopenharmony_ci// Copyright 2014 the V8 project authors. All rights reserved. 21cb0ef41Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be 31cb0ef41Sopenharmony_ci// found in the LICENSE file. 41cb0ef41Sopenharmony_ci 51cb0ef41Sopenharmony_ci#ifndef V8_COMPILER_BACKEND_IA32_INSTRUCTION_CODES_IA32_H_ 61cb0ef41Sopenharmony_ci#define V8_COMPILER_BACKEND_IA32_INSTRUCTION_CODES_IA32_H_ 71cb0ef41Sopenharmony_ci 81cb0ef41Sopenharmony_cinamespace v8 { 91cb0ef41Sopenharmony_cinamespace internal { 101cb0ef41Sopenharmony_cinamespace compiler { 111cb0ef41Sopenharmony_ci 121cb0ef41Sopenharmony_ci// IA32-specific opcodes that specify which assembly sequence to emit. 131cb0ef41Sopenharmony_ci// Most opcodes specify a single instruction. 141cb0ef41Sopenharmony_ci 151cb0ef41Sopenharmony_ci#define TARGET_ARCH_OPCODE_LIST(V) \ 161cb0ef41Sopenharmony_ci V(IA32Add) \ 171cb0ef41Sopenharmony_ci V(IA32And) \ 181cb0ef41Sopenharmony_ci V(IA32Cmp) \ 191cb0ef41Sopenharmony_ci V(IA32Cmp16) \ 201cb0ef41Sopenharmony_ci V(IA32Cmp8) \ 211cb0ef41Sopenharmony_ci V(IA32Test) \ 221cb0ef41Sopenharmony_ci V(IA32Test16) \ 231cb0ef41Sopenharmony_ci V(IA32Test8) \ 241cb0ef41Sopenharmony_ci V(IA32Or) \ 251cb0ef41Sopenharmony_ci V(IA32Xor) \ 261cb0ef41Sopenharmony_ci V(IA32Sub) \ 271cb0ef41Sopenharmony_ci V(IA32Imul) \ 281cb0ef41Sopenharmony_ci V(IA32ImulHigh) \ 291cb0ef41Sopenharmony_ci V(IA32UmulHigh) \ 301cb0ef41Sopenharmony_ci V(IA32Idiv) \ 311cb0ef41Sopenharmony_ci V(IA32Udiv) \ 321cb0ef41Sopenharmony_ci V(IA32Not) \ 331cb0ef41Sopenharmony_ci V(IA32Neg) \ 341cb0ef41Sopenharmony_ci V(IA32Shl) \ 351cb0ef41Sopenharmony_ci V(IA32Shr) \ 361cb0ef41Sopenharmony_ci V(IA32Sar) \ 371cb0ef41Sopenharmony_ci V(IA32AddPair) \ 381cb0ef41Sopenharmony_ci V(IA32SubPair) \ 391cb0ef41Sopenharmony_ci V(IA32MulPair) \ 401cb0ef41Sopenharmony_ci V(IA32ShlPair) \ 411cb0ef41Sopenharmony_ci V(IA32ShrPair) \ 421cb0ef41Sopenharmony_ci V(IA32SarPair) \ 431cb0ef41Sopenharmony_ci V(IA32Rol) \ 441cb0ef41Sopenharmony_ci V(IA32Ror) \ 451cb0ef41Sopenharmony_ci V(IA32Lzcnt) \ 461cb0ef41Sopenharmony_ci V(IA32Tzcnt) \ 471cb0ef41Sopenharmony_ci V(IA32Popcnt) \ 481cb0ef41Sopenharmony_ci V(IA32Bswap) \ 491cb0ef41Sopenharmony_ci V(IA32MFence) \ 501cb0ef41Sopenharmony_ci V(IA32LFence) \ 511cb0ef41Sopenharmony_ci V(IA32Float32Cmp) \ 521cb0ef41Sopenharmony_ci V(IA32Float32Sqrt) \ 531cb0ef41Sopenharmony_ci V(IA32Float32Round) \ 541cb0ef41Sopenharmony_ci V(IA32Float64Cmp) \ 551cb0ef41Sopenharmony_ci V(IA32Float64Mod) \ 561cb0ef41Sopenharmony_ci V(IA32Float32Max) \ 571cb0ef41Sopenharmony_ci V(IA32Float64Max) \ 581cb0ef41Sopenharmony_ci V(IA32Float32Min) \ 591cb0ef41Sopenharmony_ci V(IA32Float64Min) \ 601cb0ef41Sopenharmony_ci V(IA32Float64Sqrt) \ 611cb0ef41Sopenharmony_ci V(IA32Float64Round) \ 621cb0ef41Sopenharmony_ci V(IA32Float32ToFloat64) \ 631cb0ef41Sopenharmony_ci V(IA32Float64ToFloat32) \ 641cb0ef41Sopenharmony_ci V(IA32Float32ToInt32) \ 651cb0ef41Sopenharmony_ci V(IA32Float32ToUint32) \ 661cb0ef41Sopenharmony_ci V(IA32Float64ToInt32) \ 671cb0ef41Sopenharmony_ci V(IA32Float64ToUint32) \ 681cb0ef41Sopenharmony_ci V(SSEInt32ToFloat32) \ 691cb0ef41Sopenharmony_ci V(IA32Uint32ToFloat32) \ 701cb0ef41Sopenharmony_ci V(SSEInt32ToFloat64) \ 711cb0ef41Sopenharmony_ci V(IA32Uint32ToFloat64) \ 721cb0ef41Sopenharmony_ci V(IA32Float64ExtractLowWord32) \ 731cb0ef41Sopenharmony_ci V(IA32Float64ExtractHighWord32) \ 741cb0ef41Sopenharmony_ci V(IA32Float64InsertLowWord32) \ 751cb0ef41Sopenharmony_ci V(IA32Float64InsertHighWord32) \ 761cb0ef41Sopenharmony_ci V(IA32Float64LoadLowWord32) \ 771cb0ef41Sopenharmony_ci V(IA32Float64SilenceNaN) \ 781cb0ef41Sopenharmony_ci V(Float32Add) \ 791cb0ef41Sopenharmony_ci V(Float32Sub) \ 801cb0ef41Sopenharmony_ci V(Float64Add) \ 811cb0ef41Sopenharmony_ci V(Float64Sub) \ 821cb0ef41Sopenharmony_ci V(Float32Mul) \ 831cb0ef41Sopenharmony_ci V(Float32Div) \ 841cb0ef41Sopenharmony_ci V(Float64Mul) \ 851cb0ef41Sopenharmony_ci V(Float64Div) \ 861cb0ef41Sopenharmony_ci V(Float64Abs) \ 871cb0ef41Sopenharmony_ci V(Float64Neg) \ 881cb0ef41Sopenharmony_ci V(Float32Abs) \ 891cb0ef41Sopenharmony_ci V(Float32Neg) \ 901cb0ef41Sopenharmony_ci V(IA32Movsxbl) \ 911cb0ef41Sopenharmony_ci V(IA32Movzxbl) \ 921cb0ef41Sopenharmony_ci V(IA32Movb) \ 931cb0ef41Sopenharmony_ci V(IA32Movsxwl) \ 941cb0ef41Sopenharmony_ci V(IA32Movzxwl) \ 951cb0ef41Sopenharmony_ci V(IA32Movw) \ 961cb0ef41Sopenharmony_ci V(IA32Movl) \ 971cb0ef41Sopenharmony_ci V(IA32Movss) \ 981cb0ef41Sopenharmony_ci V(IA32Movsd) \ 991cb0ef41Sopenharmony_ci V(IA32Movdqu) \ 1001cb0ef41Sopenharmony_ci V(IA32Movlps) \ 1011cb0ef41Sopenharmony_ci V(IA32Movhps) \ 1021cb0ef41Sopenharmony_ci V(IA32BitcastFI) \ 1031cb0ef41Sopenharmony_ci V(IA32BitcastIF) \ 1041cb0ef41Sopenharmony_ci V(IA32Lea) \ 1051cb0ef41Sopenharmony_ci V(IA32Pblendvb) \ 1061cb0ef41Sopenharmony_ci V(IA32Push) \ 1071cb0ef41Sopenharmony_ci V(IA32Poke) \ 1081cb0ef41Sopenharmony_ci V(IA32Peek) \ 1091cb0ef41Sopenharmony_ci V(IA32Cvttps2dq) \ 1101cb0ef41Sopenharmony_ci V(IA32Cvttpd2dq) \ 1111cb0ef41Sopenharmony_ci V(IA32I32x4TruncF32x4U) \ 1121cb0ef41Sopenharmony_ci V(IA32I32x4TruncF64x2UZero) \ 1131cb0ef41Sopenharmony_ci V(IA32F64x2Splat) \ 1141cb0ef41Sopenharmony_ci V(IA32F64x2ExtractLane) \ 1151cb0ef41Sopenharmony_ci V(IA32F64x2ReplaceLane) \ 1161cb0ef41Sopenharmony_ci V(IA32F64x2Sqrt) \ 1171cb0ef41Sopenharmony_ci V(IA32F64x2Add) \ 1181cb0ef41Sopenharmony_ci V(IA32F64x2Sub) \ 1191cb0ef41Sopenharmony_ci V(IA32F64x2Mul) \ 1201cb0ef41Sopenharmony_ci V(IA32F64x2Div) \ 1211cb0ef41Sopenharmony_ci V(IA32F64x2Min) \ 1221cb0ef41Sopenharmony_ci V(IA32F64x2Max) \ 1231cb0ef41Sopenharmony_ci V(IA32F64x2Eq) \ 1241cb0ef41Sopenharmony_ci V(IA32F64x2Ne) \ 1251cb0ef41Sopenharmony_ci V(IA32F64x2Lt) \ 1261cb0ef41Sopenharmony_ci V(IA32F64x2Le) \ 1271cb0ef41Sopenharmony_ci V(IA32F64x2Qfma) \ 1281cb0ef41Sopenharmony_ci V(IA32F64x2Qfms) \ 1291cb0ef41Sopenharmony_ci V(IA32Minpd) \ 1301cb0ef41Sopenharmony_ci V(IA32Maxpd) \ 1311cb0ef41Sopenharmony_ci V(IA32F64x2Round) \ 1321cb0ef41Sopenharmony_ci V(IA32F64x2ConvertLowI32x4S) \ 1331cb0ef41Sopenharmony_ci V(IA32F64x2ConvertLowI32x4U) \ 1341cb0ef41Sopenharmony_ci V(IA32F64x2PromoteLowF32x4) \ 1351cb0ef41Sopenharmony_ci V(IA32I64x2SplatI32Pair) \ 1361cb0ef41Sopenharmony_ci V(IA32I64x2ReplaceLaneI32Pair) \ 1371cb0ef41Sopenharmony_ci V(IA32I64x2Abs) \ 1381cb0ef41Sopenharmony_ci V(IA32I64x2Neg) \ 1391cb0ef41Sopenharmony_ci V(IA32I64x2Shl) \ 1401cb0ef41Sopenharmony_ci V(IA32I64x2ShrS) \ 1411cb0ef41Sopenharmony_ci V(IA32I64x2Add) \ 1421cb0ef41Sopenharmony_ci V(IA32I64x2Sub) \ 1431cb0ef41Sopenharmony_ci V(IA32I64x2Mul) \ 1441cb0ef41Sopenharmony_ci V(IA32I64x2ShrU) \ 1451cb0ef41Sopenharmony_ci V(IA32I64x2BitMask) \ 1461cb0ef41Sopenharmony_ci V(IA32I64x2Eq) \ 1471cb0ef41Sopenharmony_ci V(IA32I64x2Ne) \ 1481cb0ef41Sopenharmony_ci V(IA32I64x2GtS) \ 1491cb0ef41Sopenharmony_ci V(IA32I64x2GeS) \ 1501cb0ef41Sopenharmony_ci V(IA32I64x2ExtMulLowI32x4S) \ 1511cb0ef41Sopenharmony_ci V(IA32I64x2ExtMulHighI32x4S) \ 1521cb0ef41Sopenharmony_ci V(IA32I64x2ExtMulLowI32x4U) \ 1531cb0ef41Sopenharmony_ci V(IA32I64x2ExtMulHighI32x4U) \ 1541cb0ef41Sopenharmony_ci V(IA32I64x2SConvertI32x4Low) \ 1551cb0ef41Sopenharmony_ci V(IA32I64x2SConvertI32x4High) \ 1561cb0ef41Sopenharmony_ci V(IA32I64x2UConvertI32x4Low) \ 1571cb0ef41Sopenharmony_ci V(IA32I64x2UConvertI32x4High) \ 1581cb0ef41Sopenharmony_ci V(IA32F32x4Splat) \ 1591cb0ef41Sopenharmony_ci V(IA32F32x4ExtractLane) \ 1601cb0ef41Sopenharmony_ci V(IA32Insertps) \ 1611cb0ef41Sopenharmony_ci V(IA32F32x4SConvertI32x4) \ 1621cb0ef41Sopenharmony_ci V(IA32F32x4UConvertI32x4) \ 1631cb0ef41Sopenharmony_ci V(IA32F32x4Sqrt) \ 1641cb0ef41Sopenharmony_ci V(IA32F32x4RecipApprox) \ 1651cb0ef41Sopenharmony_ci V(IA32F32x4RecipSqrtApprox) \ 1661cb0ef41Sopenharmony_ci V(IA32F32x4Add) \ 1671cb0ef41Sopenharmony_ci V(IA32F32x4Sub) \ 1681cb0ef41Sopenharmony_ci V(IA32F32x4Mul) \ 1691cb0ef41Sopenharmony_ci V(IA32F32x4Div) \ 1701cb0ef41Sopenharmony_ci V(IA32F32x4Min) \ 1711cb0ef41Sopenharmony_ci V(IA32F32x4Max) \ 1721cb0ef41Sopenharmony_ci V(IA32F32x4Eq) \ 1731cb0ef41Sopenharmony_ci V(IA32F32x4Ne) \ 1741cb0ef41Sopenharmony_ci V(IA32F32x4Lt) \ 1751cb0ef41Sopenharmony_ci V(IA32F32x4Le) \ 1761cb0ef41Sopenharmony_ci V(IA32F32x4Qfma) \ 1771cb0ef41Sopenharmony_ci V(IA32F32x4Qfms) \ 1781cb0ef41Sopenharmony_ci V(IA32Minps) \ 1791cb0ef41Sopenharmony_ci V(IA32Maxps) \ 1801cb0ef41Sopenharmony_ci V(IA32F32x4Round) \ 1811cb0ef41Sopenharmony_ci V(IA32F32x4DemoteF64x2Zero) \ 1821cb0ef41Sopenharmony_ci V(IA32I32x4Splat) \ 1831cb0ef41Sopenharmony_ci V(IA32I32x4ExtractLane) \ 1841cb0ef41Sopenharmony_ci V(IA32I32x4SConvertF32x4) \ 1851cb0ef41Sopenharmony_ci V(IA32I32x4SConvertI16x8Low) \ 1861cb0ef41Sopenharmony_ci V(IA32I32x4SConvertI16x8High) \ 1871cb0ef41Sopenharmony_ci V(IA32I32x4Neg) \ 1881cb0ef41Sopenharmony_ci V(IA32I32x4Shl) \ 1891cb0ef41Sopenharmony_ci V(IA32I32x4ShrS) \ 1901cb0ef41Sopenharmony_ci V(IA32I32x4Add) \ 1911cb0ef41Sopenharmony_ci V(IA32I32x4Sub) \ 1921cb0ef41Sopenharmony_ci V(IA32I32x4Mul) \ 1931cb0ef41Sopenharmony_ci V(IA32I32x4MinS) \ 1941cb0ef41Sopenharmony_ci V(IA32I32x4MaxS) \ 1951cb0ef41Sopenharmony_ci V(IA32I32x4Eq) \ 1961cb0ef41Sopenharmony_ci V(IA32I32x4Ne) \ 1971cb0ef41Sopenharmony_ci V(IA32I32x4GtS) \ 1981cb0ef41Sopenharmony_ci V(IA32I32x4GeS) \ 1991cb0ef41Sopenharmony_ci V(SSEI32x4UConvertF32x4) \ 2001cb0ef41Sopenharmony_ci V(AVXI32x4UConvertF32x4) \ 2011cb0ef41Sopenharmony_ci V(IA32I32x4UConvertI16x8Low) \ 2021cb0ef41Sopenharmony_ci V(IA32I32x4UConvertI16x8High) \ 2031cb0ef41Sopenharmony_ci V(IA32I32x4ShrU) \ 2041cb0ef41Sopenharmony_ci V(IA32I32x4MinU) \ 2051cb0ef41Sopenharmony_ci V(IA32I32x4MaxU) \ 2061cb0ef41Sopenharmony_ci V(SSEI32x4GtU) \ 2071cb0ef41Sopenharmony_ci V(AVXI32x4GtU) \ 2081cb0ef41Sopenharmony_ci V(SSEI32x4GeU) \ 2091cb0ef41Sopenharmony_ci V(AVXI32x4GeU) \ 2101cb0ef41Sopenharmony_ci V(IA32I32x4Abs) \ 2111cb0ef41Sopenharmony_ci V(IA32I32x4BitMask) \ 2121cb0ef41Sopenharmony_ci V(IA32I32x4DotI16x8S) \ 2131cb0ef41Sopenharmony_ci V(IA32I32x4ExtMulLowI16x8S) \ 2141cb0ef41Sopenharmony_ci V(IA32I32x4ExtMulHighI16x8S) \ 2151cb0ef41Sopenharmony_ci V(IA32I32x4ExtMulLowI16x8U) \ 2161cb0ef41Sopenharmony_ci V(IA32I32x4ExtMulHighI16x8U) \ 2171cb0ef41Sopenharmony_ci V(IA32I32x4ExtAddPairwiseI16x8S) \ 2181cb0ef41Sopenharmony_ci V(IA32I32x4ExtAddPairwiseI16x8U) \ 2191cb0ef41Sopenharmony_ci V(IA32I32x4TruncSatF64x2SZero) \ 2201cb0ef41Sopenharmony_ci V(IA32I32x4TruncSatF64x2UZero) \ 2211cb0ef41Sopenharmony_ci V(IA32I16x8Splat) \ 2221cb0ef41Sopenharmony_ci V(IA32I16x8ExtractLaneS) \ 2231cb0ef41Sopenharmony_ci V(IA32I16x8SConvertI8x16Low) \ 2241cb0ef41Sopenharmony_ci V(IA32I16x8SConvertI8x16High) \ 2251cb0ef41Sopenharmony_ci V(IA32I16x8Neg) \ 2261cb0ef41Sopenharmony_ci V(IA32I16x8Shl) \ 2271cb0ef41Sopenharmony_ci V(IA32I16x8ShrS) \ 2281cb0ef41Sopenharmony_ci V(IA32I16x8SConvertI32x4) \ 2291cb0ef41Sopenharmony_ci V(IA32I16x8Add) \ 2301cb0ef41Sopenharmony_ci V(IA32I16x8AddSatS) \ 2311cb0ef41Sopenharmony_ci V(IA32I16x8Sub) \ 2321cb0ef41Sopenharmony_ci V(IA32I16x8SubSatS) \ 2331cb0ef41Sopenharmony_ci V(IA32I16x8Mul) \ 2341cb0ef41Sopenharmony_ci V(IA32I16x8MinS) \ 2351cb0ef41Sopenharmony_ci V(IA32I16x8MaxS) \ 2361cb0ef41Sopenharmony_ci V(IA32I16x8Eq) \ 2371cb0ef41Sopenharmony_ci V(SSEI16x8Ne) \ 2381cb0ef41Sopenharmony_ci V(AVXI16x8Ne) \ 2391cb0ef41Sopenharmony_ci V(IA32I16x8GtS) \ 2401cb0ef41Sopenharmony_ci V(SSEI16x8GeS) \ 2411cb0ef41Sopenharmony_ci V(AVXI16x8GeS) \ 2421cb0ef41Sopenharmony_ci V(IA32I16x8UConvertI8x16Low) \ 2431cb0ef41Sopenharmony_ci V(IA32I16x8UConvertI8x16High) \ 2441cb0ef41Sopenharmony_ci V(IA32I16x8ShrU) \ 2451cb0ef41Sopenharmony_ci V(IA32I16x8UConvertI32x4) \ 2461cb0ef41Sopenharmony_ci V(IA32I16x8AddSatU) \ 2471cb0ef41Sopenharmony_ci V(IA32I16x8SubSatU) \ 2481cb0ef41Sopenharmony_ci V(IA32I16x8MinU) \ 2491cb0ef41Sopenharmony_ci V(IA32I16x8MaxU) \ 2501cb0ef41Sopenharmony_ci V(SSEI16x8GtU) \ 2511cb0ef41Sopenharmony_ci V(AVXI16x8GtU) \ 2521cb0ef41Sopenharmony_ci V(SSEI16x8GeU) \ 2531cb0ef41Sopenharmony_ci V(AVXI16x8GeU) \ 2541cb0ef41Sopenharmony_ci V(IA32I16x8RoundingAverageU) \ 2551cb0ef41Sopenharmony_ci V(IA32I16x8Abs) \ 2561cb0ef41Sopenharmony_ci V(IA32I16x8BitMask) \ 2571cb0ef41Sopenharmony_ci V(IA32I16x8ExtMulLowI8x16S) \ 2581cb0ef41Sopenharmony_ci V(IA32I16x8ExtMulHighI8x16S) \ 2591cb0ef41Sopenharmony_ci V(IA32I16x8ExtMulLowI8x16U) \ 2601cb0ef41Sopenharmony_ci V(IA32I16x8ExtMulHighI8x16U) \ 2611cb0ef41Sopenharmony_ci V(IA32I16x8ExtAddPairwiseI8x16S) \ 2621cb0ef41Sopenharmony_ci V(IA32I16x8ExtAddPairwiseI8x16U) \ 2631cb0ef41Sopenharmony_ci V(IA32I16x8Q15MulRSatS) \ 2641cb0ef41Sopenharmony_ci V(IA32I8x16Splat) \ 2651cb0ef41Sopenharmony_ci V(IA32I8x16ExtractLaneS) \ 2661cb0ef41Sopenharmony_ci V(IA32Pinsrb) \ 2671cb0ef41Sopenharmony_ci V(IA32Pinsrw) \ 2681cb0ef41Sopenharmony_ci V(IA32Pinsrd) \ 2691cb0ef41Sopenharmony_ci V(IA32Pextrb) \ 2701cb0ef41Sopenharmony_ci V(IA32Pextrw) \ 2711cb0ef41Sopenharmony_ci V(IA32S128Store32Lane) \ 2721cb0ef41Sopenharmony_ci V(IA32I8x16SConvertI16x8) \ 2731cb0ef41Sopenharmony_ci V(IA32I8x16Neg) \ 2741cb0ef41Sopenharmony_ci V(IA32I8x16Shl) \ 2751cb0ef41Sopenharmony_ci V(IA32I8x16ShrS) \ 2761cb0ef41Sopenharmony_ci V(IA32I8x16Add) \ 2771cb0ef41Sopenharmony_ci V(IA32I8x16AddSatS) \ 2781cb0ef41Sopenharmony_ci V(IA32I8x16Sub) \ 2791cb0ef41Sopenharmony_ci V(IA32I8x16SubSatS) \ 2801cb0ef41Sopenharmony_ci V(IA32I8x16MinS) \ 2811cb0ef41Sopenharmony_ci V(IA32I8x16MaxS) \ 2821cb0ef41Sopenharmony_ci V(IA32I8x16Eq) \ 2831cb0ef41Sopenharmony_ci V(SSEI8x16Ne) \ 2841cb0ef41Sopenharmony_ci V(AVXI8x16Ne) \ 2851cb0ef41Sopenharmony_ci V(IA32I8x16GtS) \ 2861cb0ef41Sopenharmony_ci V(SSEI8x16GeS) \ 2871cb0ef41Sopenharmony_ci V(AVXI8x16GeS) \ 2881cb0ef41Sopenharmony_ci V(IA32I8x16UConvertI16x8) \ 2891cb0ef41Sopenharmony_ci V(IA32I8x16AddSatU) \ 2901cb0ef41Sopenharmony_ci V(IA32I8x16SubSatU) \ 2911cb0ef41Sopenharmony_ci V(IA32I8x16ShrU) \ 2921cb0ef41Sopenharmony_ci V(IA32I8x16MinU) \ 2931cb0ef41Sopenharmony_ci V(IA32I8x16MaxU) \ 2941cb0ef41Sopenharmony_ci V(SSEI8x16GtU) \ 2951cb0ef41Sopenharmony_ci V(AVXI8x16GtU) \ 2961cb0ef41Sopenharmony_ci V(SSEI8x16GeU) \ 2971cb0ef41Sopenharmony_ci V(AVXI8x16GeU) \ 2981cb0ef41Sopenharmony_ci V(IA32I8x16RoundingAverageU) \ 2991cb0ef41Sopenharmony_ci V(IA32I8x16Abs) \ 3001cb0ef41Sopenharmony_ci V(IA32I8x16BitMask) \ 3011cb0ef41Sopenharmony_ci V(IA32I8x16Popcnt) \ 3021cb0ef41Sopenharmony_ci V(IA32S128Const) \ 3031cb0ef41Sopenharmony_ci V(IA32S128Zero) \ 3041cb0ef41Sopenharmony_ci V(IA32S128AllOnes) \ 3051cb0ef41Sopenharmony_ci V(IA32S128Not) \ 3061cb0ef41Sopenharmony_ci V(IA32S128And) \ 3071cb0ef41Sopenharmony_ci V(IA32S128Or) \ 3081cb0ef41Sopenharmony_ci V(IA32S128Xor) \ 3091cb0ef41Sopenharmony_ci V(IA32S128Select) \ 3101cb0ef41Sopenharmony_ci V(IA32S128AndNot) \ 3111cb0ef41Sopenharmony_ci V(IA32I8x16Swizzle) \ 3121cb0ef41Sopenharmony_ci V(IA32I8x16Shuffle) \ 3131cb0ef41Sopenharmony_ci V(IA32S128Load8Splat) \ 3141cb0ef41Sopenharmony_ci V(IA32S128Load16Splat) \ 3151cb0ef41Sopenharmony_ci V(IA32S128Load32Splat) \ 3161cb0ef41Sopenharmony_ci V(IA32S128Load64Splat) \ 3171cb0ef41Sopenharmony_ci V(IA32S128Load8x8S) \ 3181cb0ef41Sopenharmony_ci V(IA32S128Load8x8U) \ 3191cb0ef41Sopenharmony_ci V(IA32S128Load16x4S) \ 3201cb0ef41Sopenharmony_ci V(IA32S128Load16x4U) \ 3211cb0ef41Sopenharmony_ci V(IA32S128Load32x2S) \ 3221cb0ef41Sopenharmony_ci V(IA32S128Load32x2U) \ 3231cb0ef41Sopenharmony_ci V(IA32S32x4Rotate) \ 3241cb0ef41Sopenharmony_ci V(IA32S32x4Swizzle) \ 3251cb0ef41Sopenharmony_ci V(IA32S32x4Shuffle) \ 3261cb0ef41Sopenharmony_ci V(IA32S16x8Blend) \ 3271cb0ef41Sopenharmony_ci V(IA32S16x8HalfShuffle1) \ 3281cb0ef41Sopenharmony_ci V(IA32S16x8HalfShuffle2) \ 3291cb0ef41Sopenharmony_ci V(IA32S8x16Alignr) \ 3301cb0ef41Sopenharmony_ci V(IA32S16x8Dup) \ 3311cb0ef41Sopenharmony_ci V(IA32S8x16Dup) \ 3321cb0ef41Sopenharmony_ci V(SSES16x8UnzipHigh) \ 3331cb0ef41Sopenharmony_ci V(AVXS16x8UnzipHigh) \ 3341cb0ef41Sopenharmony_ci V(SSES16x8UnzipLow) \ 3351cb0ef41Sopenharmony_ci V(AVXS16x8UnzipLow) \ 3361cb0ef41Sopenharmony_ci V(SSES8x16UnzipHigh) \ 3371cb0ef41Sopenharmony_ci V(AVXS8x16UnzipHigh) \ 3381cb0ef41Sopenharmony_ci V(SSES8x16UnzipLow) \ 3391cb0ef41Sopenharmony_ci V(AVXS8x16UnzipLow) \ 3401cb0ef41Sopenharmony_ci V(IA32S64x2UnpackHigh) \ 3411cb0ef41Sopenharmony_ci V(IA32S32x4UnpackHigh) \ 3421cb0ef41Sopenharmony_ci V(IA32S16x8UnpackHigh) \ 3431cb0ef41Sopenharmony_ci V(IA32S8x16UnpackHigh) \ 3441cb0ef41Sopenharmony_ci V(IA32S64x2UnpackLow) \ 3451cb0ef41Sopenharmony_ci V(IA32S32x4UnpackLow) \ 3461cb0ef41Sopenharmony_ci V(IA32S16x8UnpackLow) \ 3471cb0ef41Sopenharmony_ci V(IA32S8x16UnpackLow) \ 3481cb0ef41Sopenharmony_ci V(SSES8x16TransposeLow) \ 3491cb0ef41Sopenharmony_ci V(AVXS8x16TransposeLow) \ 3501cb0ef41Sopenharmony_ci V(SSES8x16TransposeHigh) \ 3511cb0ef41Sopenharmony_ci V(AVXS8x16TransposeHigh) \ 3521cb0ef41Sopenharmony_ci V(SSES8x8Reverse) \ 3531cb0ef41Sopenharmony_ci V(AVXS8x8Reverse) \ 3541cb0ef41Sopenharmony_ci V(SSES8x4Reverse) \ 3551cb0ef41Sopenharmony_ci V(AVXS8x4Reverse) \ 3561cb0ef41Sopenharmony_ci V(SSES8x2Reverse) \ 3571cb0ef41Sopenharmony_ci V(AVXS8x2Reverse) \ 3581cb0ef41Sopenharmony_ci V(IA32S128AnyTrue) \ 3591cb0ef41Sopenharmony_ci V(IA32I64x2AllTrue) \ 3601cb0ef41Sopenharmony_ci V(IA32I32x4AllTrue) \ 3611cb0ef41Sopenharmony_ci V(IA32I16x8AllTrue) \ 3621cb0ef41Sopenharmony_ci V(IA32I8x16AllTrue) \ 3631cb0ef41Sopenharmony_ci V(IA32Word32AtomicPairLoad) \ 3641cb0ef41Sopenharmony_ci V(IA32Word32ReleasePairStore) \ 3651cb0ef41Sopenharmony_ci V(IA32Word32SeqCstPairStore) \ 3661cb0ef41Sopenharmony_ci V(IA32Word32AtomicPairAdd) \ 3671cb0ef41Sopenharmony_ci V(IA32Word32AtomicPairSub) \ 3681cb0ef41Sopenharmony_ci V(IA32Word32AtomicPairAnd) \ 3691cb0ef41Sopenharmony_ci V(IA32Word32AtomicPairOr) \ 3701cb0ef41Sopenharmony_ci V(IA32Word32AtomicPairXor) \ 3711cb0ef41Sopenharmony_ci V(IA32Word32AtomicPairExchange) \ 3721cb0ef41Sopenharmony_ci V(IA32Word32AtomicPairCompareExchange) 3731cb0ef41Sopenharmony_ci 3741cb0ef41Sopenharmony_ci// Addressing modes represent the "shape" of inputs to an instruction. 3751cb0ef41Sopenharmony_ci// Many instructions support multiple addressing modes. Addressing modes 3761cb0ef41Sopenharmony_ci// are encoded into the InstructionCode of the instruction and tell the 3771cb0ef41Sopenharmony_ci// code generator after register allocation which assembler method to call. 3781cb0ef41Sopenharmony_ci// 3791cb0ef41Sopenharmony_ci// We use the following local notation for addressing modes: 3801cb0ef41Sopenharmony_ci// 3811cb0ef41Sopenharmony_ci// M = memory operand 3821cb0ef41Sopenharmony_ci// R = base register 3831cb0ef41Sopenharmony_ci// N = index register * N for N in {1, 2, 4, 8} 3841cb0ef41Sopenharmony_ci// I = immediate displacement (int32_t) 3851cb0ef41Sopenharmony_ci 3861cb0ef41Sopenharmony_ci#define TARGET_ADDRESSING_MODE_LIST(V) \ 3871cb0ef41Sopenharmony_ci V(MR) /* [%r1 ] */ \ 3881cb0ef41Sopenharmony_ci V(MRI) /* [%r1 + K] */ \ 3891cb0ef41Sopenharmony_ci V(MR1) /* [%r1 + %r2*1 ] */ \ 3901cb0ef41Sopenharmony_ci V(MR2) /* [%r1 + %r2*2 ] */ \ 3911cb0ef41Sopenharmony_ci V(MR4) /* [%r1 + %r2*4 ] */ \ 3921cb0ef41Sopenharmony_ci V(MR8) /* [%r1 + %r2*8 ] */ \ 3931cb0ef41Sopenharmony_ci V(MR1I) /* [%r1 + %r2*1 + K] */ \ 3941cb0ef41Sopenharmony_ci V(MR2I) /* [%r1 + %r2*2 + K] */ \ 3951cb0ef41Sopenharmony_ci V(MR4I) /* [%r1 + %r2*4 + K] */ \ 3961cb0ef41Sopenharmony_ci V(MR8I) /* [%r1 + %r2*8 + K] */ \ 3971cb0ef41Sopenharmony_ci V(M1) /* [ %r2*1 ] */ \ 3981cb0ef41Sopenharmony_ci V(M2) /* [ %r2*2 ] */ \ 3991cb0ef41Sopenharmony_ci V(M4) /* [ %r2*4 ] */ \ 4001cb0ef41Sopenharmony_ci V(M8) /* [ %r2*8 ] */ \ 4011cb0ef41Sopenharmony_ci V(M1I) /* [ %r2*1 + K] */ \ 4021cb0ef41Sopenharmony_ci V(M2I) /* [ %r2*2 + K] */ \ 4031cb0ef41Sopenharmony_ci V(M4I) /* [ %r2*4 + K] */ \ 4041cb0ef41Sopenharmony_ci V(M8I) /* [ %r2*8 + K] */ \ 4051cb0ef41Sopenharmony_ci V(MI) /* [ K] */ \ 4061cb0ef41Sopenharmony_ci V(Root) /* [%root + K] */ 4071cb0ef41Sopenharmony_ci 4081cb0ef41Sopenharmony_ci} // namespace compiler 4091cb0ef41Sopenharmony_ci} // namespace internal 4101cb0ef41Sopenharmony_ci} // namespace v8 4111cb0ef41Sopenharmony_ci 4121cb0ef41Sopenharmony_ci#endif // V8_COMPILER_BACKEND_IA32_INSTRUCTION_CODES_IA32_H_ 413